def select_backup(self): должен вызваться из
QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL("clicked()"), self.select_backup)
но при нажатии на кнопку ничего не происходит.
Вот полный текст. Начиная с строки 110 при нажатии на кнопку вызывается функция control_backup которая открывает дочернее окно Ui_ControlBackup
В нём на 423-424 строках вызываю self.select_backup (которая на 441-442) но ни сообщения об ошибке не сообщения ‘ok’ в консоли нет. Что может быть не правильно? Я не могу понять
#!/usr/bin/python # -*- coding: utf-8 -*- import sys import platform import os import ConfigParser import urllib import getpass import shutil from datetime import * from PyQt4 import QtCore, QtGui server = "http://modostroi.ru/mpm/" urllib.urlretrieve(server+'menecraft_info_package.ini', filename='menecraft_info_package.ini') # скачиваем список пакетов pth = os.path.expanduser('~')+'/' # путь до домашней папки program_name = 'Minecraft Package Manager' program_version = 'v0.6' class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(500, 476) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.tabWidget = QtGui.QTabWidget(self.centralwidget) self.tabWidget.setGeometry(QtCore.QRect(0, 0, 501, 431)) self.tabWidget.setObjectName("tabWidget") self.tab = QtGui.QWidget() self.tab.setObjectName("tab") self.listWidget = QtGui.QListWidget(self.tab) self.listWidget.setGeometry(QtCore.QRect(10, 10, 171, 381)) self.listWidget.setToolTip("") self.listWidget.setAutoFillBackground(True) self.listWidget.setObjectName("listWidget") menecraft_list_package = ConfigParser.ConfigParser() menecraft_list_package.read('menecraft_info_package.ini') f = menecraft_list_package.sections() for line in f: QtGui.QListWidgetItem(self.listWidget) QtCore.QObject.connect(self.listWidget, QtCore.SIGNAL("clicked(QModelIndex)"), self.desc) self.pushButton_1 = QtGui.QPushButton(self.tab) self.pushButton_1.setGeometry(QtCore.QRect(190, 350, 201, 41)) self.pushButton_1.setObjectName("pushButton_1") QtCore.QObject.connect(self.pushButton_1, QtCore.SIGNAL("clicked()"), self.select_minecraft_version) self.pushButton_2 = QtGui.QPushButton(self.tab) self.pushButton_2.setGeometry(QtCore.QRect(400, 350, 91, 41)) self.pushButton_2.setObjectName("pushButton_2") self.textBrowser = QtGui.QTextBrowser(self.tab) self.textBrowser.setGeometry(QtCore.QRect(190, 11, 301, 331)) self.textBrowser.setObjectName("textBrowser") self.tabWidget.addTab(self.tab, "") self.tab_2 = QtGui.QWidget() self.tab_2.setObjectName("tab_2") self.tabWidget.addTab(self.tab_2, "") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 500, 19)) self.menubar.setObjectName("menubar") self.menu_2 = QtGui.QMenu(self.menubar) self.menu_2.setObjectName("menu675") self.menu_1 = QtGui.QMenu(self.menubar) self.menu_1.setObjectName("menu") MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") self.statusminecraft() MainWindow.setStatusBar(self.statusbar) self.action_1 = QtGui.QAction(MainWindow) self.action_1.setObjectName("action_1") self.action_2 = QtGui.QAction(MainWindow) self.action_2.setObjectName("action_2") self.action_3 = QtGui.QAction(MainWindow) self.action_3.setObjectName("action_3") self.action_4 = QtGui.QAction(MainWindow) self.action_4.setObjectName("action_4") self.menu_1.addAction(self.action_1) self.menu_1.addAction(self.action_2) self.menu_2.addAction(self.action_3) self.menu_2.addAction(self.action_4) self.menubar.addAction(self.menu_1.menuAction()) self.menubar.addAction(self.menu_2.menuAction()) self.retranslateUi(MainWindow) self.tabWidget.setCurrentIndex(0) QtCore.QObject.connect(self.action_1, QtCore.SIGNAL("activated()"), self.create_backup) QtCore.QObject.connect(self.action_2, QtCore.SIGNAL("activated()"), self.control_backup) QtCore.QMetaObject.connectSlotsByName(MainWindow) def statusminecraft(self): if os.path.exists('config.ini'): config = ConfigParser.ConfigParser() config.read('config.ini') if (config.has_option('minecraft', 'version')==True): minecraft_version = config.get('minecraft', 'version') text = u'Сейчас установлен minecraft v' self.statusbar.showMessage(text+minecraft_version) else: create_congig_txt = open('config.ini', 'w') create_congig_txt.close() if os.path.exists(pth+'.minecraft/bin'): text = u'Необходимо удалить Minecraft, похоже он' ' установлен не из ' self.statusbar.showMessage(text+program_name) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle( QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) __sortingEnabled = self.listWidget.isSortingEnabled() self.listWidget.setSortingEnabled(False) menecraft_list_package = ConfigParser.ConfigParser() menecraft_list_package.read('menecraft_info_package.ini') f = menecraft_list_package.sections() i=0 for line in f: self.listWidget.item(i).setText( QtGui.QApplication.translate("MainWindow", line, None, QtGui.QApplication.UnicodeUTF8)) i+=1 self.listWidget.setSortingEnabled(__sortingEnabled) self.pushButton_1.setText(QtGui.QApplication.translate( "MainWindow", "Установить", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_2.setText(QtGui.QApplication.translate( "MainWindow", "Подробнее", None, QtGui.QApplication.UnicodeUTF8)) self.textBrowser.setHtml(QtGui.QApplication.translate( "MainWindow", "слева выберите версию для установки", None, QtGui.QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), QtGui.QApplication.translate("MainWindow", "Minecraft", None, QtGui.QApplication.UnicodeUTF8)) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), QtGui.QApplication.translate("MainWindow", "Модификации", None, QtGui.QApplication.UnicodeUTF8)) self.menu_1.setTitle(QtGui.QApplication.translate( "MainWindow", "Резервные копии", None, QtGui.QApplication.UnicodeUTF8)) self.menu_2.setTitle(QtGui.QApplication.translate( "MainWindow", "Справка", None, QtGui.QApplication.UnicodeUTF8)) self.action_1.setText(QtGui.QApplication.translate( "MainWindow", "Создать резервную копию", None, QtGui.QApplication.UnicodeUTF8)) self.action_2.setText(QtGui.QApplication.translate( "MainWindow", "Восстановить резернвую копию", None, QtGui.QApplication.UnicodeUTF8)) self.action_3.setText(QtGui.QApplication.translate( "MainWindow", "О программе", None, QtGui.QApplication.UnicodeUTF8)) self.action_4.setText(QtGui.QApplication.translate( "MainWindow", "Как пользоваться", None, QtGui.QApplication.UnicodeUTF8)) def select_minecraft_version(self): for item in self.listWidget.selectedItems(): select_version = item.text() select_version = str(select_version) MinecraftDownloadWindow = QtGui.QMainWindow() ui = Ui_MinecraftDownloadWindow(select_version) self.second_window = MinecraftDownloadWindow ui.setupUi(MinecraftDownloadWindow) MinecraftDownloadWindow.show() ui.d(select_version) def desc(self, QModelIndex): for item in self.listWidget.selectedItems(): select_version = item.text() menecraft_info_package = ConfigParser.ConfigParser() menecraft_info_package.read('menecraft_info_package.ini') desc = menecraft_info_package.get(str(select_version), 'desc') self.textBrowser.setHtml(QtGui.QApplication.translate( "MainWindow", "<!DOCTYPE html>\n<html><body style=\" font-family:\'Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"+desc+"</body></html>", None, QtGui.QApplication.UnicodeUTF8)) def create_backup(self): CreateBackup = QtGui.QMainWindow() ui = Ui_CreateBackup() self.second_window = CreateBackup ui.setupUi(CreateBackup) CreateBackup.show() def control_backup(self): ControlBackup = QtGui.QMainWindow() ui = Ui_ControlBackup() ui.setupUi(ControlBackup) ControlBackup.show() self.second_window = ControlBackup class Ui_MinecraftDownloadWindow(object): def __init__(self, select_version): self.select_version = select_version def setupUi(self, MinecraftDownloadWindow): MinecraftDownloadWindow.setObjectName("MinecraftDownloadWindow") MinecraftDownloadWindow.resize(272, 179) self.centralwidget = QtGui.QWidget(MinecraftDownloadWindow) self.centralwidget.setObjectName("centralwidget") self.progressBar = QtGui.QProgressBar(self.centralwidget) self.progressBar.setGeometry(QtCore.QRect(10, 140, 171, 31)) self.progressBar.setProperty("value", 24) self.progressBar.setObjectName("progressBar") self.textBrowser = QtGui.QTextBrowser(self.centralwidget) self.textBrowser.setGeometry(QtCore.QRect(10, 10, 251, 121)) self.textBrowser.setObjectName("textBrowser") self.pushButton = QtGui.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(190, 140, 71, 31)) self.pushButton.setObjectName("pushButton") self.pushButton.setEnabled(False) QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), MinecraftDownloadWindow, QtCore.SLOT("close()")) QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), MinecraftDownloadWindow.close) MinecraftDownloadWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MinecraftDownloadWindow) QtCore.QMetaObject.connectSlotsByName(MinecraftDownloadWindow) def retranslateUi(self, MinecraftDownloadWindow): MinecraftDownloadWindow.setWindowTitle( QtGui.QApplication.translate("MinecraftDownloadWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton.setText(QtGui.QApplication.translate( "MinecraftDownloadWindow", "закрыть", None, QtGui.QApplication.UnicodeUTF8)) def loadProgress(self, bl, blsize, size): p = float(min(bl*blsize, size)) / size * 85 + 5 self.progressBar.setProperty("value", p) def d(self, select_version): menecraft_info_package = ConfigParser.ConfigParser() menecraft_info_package.read('menecraft_info_package.ini') url = menecraft_info_package.get(self.select_version, 'url') filename = menecraft_info_package.get(self.select_version, 'filename') self.textBrowser.setHtml(QtGui.QApplication.translate( "MinecraftDownloadWindow", "предустановочная подготовка", None, QtGui.QApplication.UnicodeUTF8)) mkdir('mpm_cache') self.progressBar.setProperty("value", 1) mkdir('mpm_cache/minecraft') self.progressBar.setProperty("value", 3) mkdir('mpm_cache/minecraft/temp') self.progressBar.setProperty("value", 5) self.textBrowser.setHtml(QtGui.QApplication.translate( "MinecraftDownloadWindow", "скачиваем клиент...", None, QtGui.QApplication.UnicodeUTF8)) urllib.urlretrieve(url, 'mpm_cache/minecraft/'+filename, self.loadProgress) # качаем майнкрафт menecraft_info_package = ConfigParser.ConfigParser() menecraft_info_package.read('menecraft_info_package.ini') url = menecraft_info_package.get(select_version, 'url') filename = menecraft_info_package.get(select_version, 'filename') self.textBrowser.setHtml(QtGui.QApplication.translate( "MinecraftDownloadWindow", "распаковка", None, QtGui.QApplication.UnicodeUTF8)) self.progressBar.setProperty("value", 91) shutil.copy('mpm_cache/minecraft/'+filename, 'mpm_cache/minecraft/temp/'+filename) qazwsx = filename.split('.') if (qazwsx[1]=='zip'): os.system('cd mpm_cache/minecraft/temp/ && unzip '+filename) elif (qazwsx[1]=='7z'): if (os.name=='posix'): os.system('cd mpm_cache/minecraft/temp/ && 7z x '+filename) elif (os.name=='nt'): shutil.copy('bin/7za.exe', 'mpm_cache/minecraft/temp/7za.exe') os.system('cd mpm_cache/minecraft/temp/ && 7za.exe x '+filename) else: print 'unknown platform' mkdir(pth+'.minecraft') self.progressBar.setProperty("value", 95) backup() remove(pth+'.minecraft/bin') self.progressBar.setProperty("value", 98) shutil.move('mpm_cache/minecraft/temp/.minecraft/bin', pth+'.minecraft/bin') remove('mpm_cache/minecraft/temp/') self.progressBar.setProperty("value", 100) self.textBrowser.setHtml(QtGui.QApplication.translate( "MinecraftDownloadWindow", "установка выполнена", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton.setEnabled(True) class Ui_CreateBackup(object): def setupUi(self, CreateBackup): CreateBackup.setObjectName("CreateBackup") CreateBackup.resize(291, 80) self.centralwidget = QtGui.QWidget(CreateBackup) self.centralwidget.setObjectName("centralwidget") self.label = QtGui.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(10, 10, 271, 31)) self.label.setScaledContents(False) self.label.setObjectName("label") self.pushButton = QtGui.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(190, 40, 91, 31)) self.pushButton.setObjectName("pushButton") backup() CreateBackup.setCentralWidget(self.centralwidget) QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), CreateBackup, QtCore.SLOT("close()")) self.retranslateUi(CreateBackup) QtCore.QMetaObject.connectSlotsByName(CreateBackup) def retranslateUi(self, CreateBackup): CreateBackup.setWindowTitle(QtGui.QApplication.translate("CreateBackup", "CreateBackup", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("CreateBackup", "бекаб успешно создан", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton.setText(QtGui.QApplication.translate("CreateBackup", "Закрыть", None, QtGui.QApplication.UnicodeUTF8)) class Ui_ControlBackup(object): def setupUi(self, ControlBackup): ControlBackup.setObjectName("ControlBackup") ControlBackup.resize(400, 250) self.centralwidget = QtGui.QWidget(ControlBackup) self.centralwidget.setObjectName("centralwidget") self.pushButton = QtGui.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(270, 210, 121, 31)) self.pushButton.setObjectName("pushButton") self.listWidget = QtGui.QListWidget(self.centralwidget) self.listWidget.setGeometry(QtCore.QRect(10, 10, 381, 192)) self.listWidget.setObjectName("listWidget") dir_backups = os.listdir(pth+'.minecraft/backup/') for line in dir_backups: QtGui.QListWidgetItem(self.listWidget) self.pushButton_2 = QtGui.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(10, 210, 121, 31)) self.pushButton_2.setObjectName("pushButton_2") QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL("clicked()"), self.select_backup) self.pushButton_3 = QtGui.QPushButton(self.centralwidget) self.pushButton_3.setGeometry(QtCore.QRect(140, 210, 121, 31)) self.pushButton_3.setObjectName("pushButton_3") ControlBackup.setCentralWidget(self.centralwidget) QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), ControlBackup, QtCore.SLOT("close()")) self.retranslateUi(ControlBackup) QtCore.QMetaObject.connectSlotsByName(ControlBackup) def select_backup(self): print 'ok' def retranslateUi(self, ControlBackup): ControlBackup.setWindowTitle(QtGui.QApplication.translate( "ControlBackup", "ControlBackup", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton.setText(QtGui.QApplication.translate( "ControlBackup", "Закрыть", None, QtGui.QApplication.UnicodeUTF8)) __sortingEnabled = self.listWidget.isSortingEnabled() self.listWidget.setSortingEnabled(False) dir_backups = os.listdir(pth+'.minecraft/backup/') i=0 for line in dir_backups: self.listWidget.item(i).setText( QtGui.QApplication.translate("ControlBackup", line, None, QtGui.QApplication.UnicodeUTF8)) i+=1 self.listWidget.setSortingEnabled(__sortingEnabled) self.pushButton_2.setText(QtGui.QApplication.translate( "ControlBackup", "Восстановить", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_3.setText(QtGui.QApplication.translate( "ControlBackup", "Удалить", None, QtGui.QApplication.UnicodeUTF8)) def remove(patch): if os.path.exists(patch)==True: if (os.name=='posix'): os.system('rm -R '+patch) elif (os.name=='nt'): os.system('del -R '+patch) else: print 'unknown platform' def mkdir(patch): if os.path.exists(patch)==False: os.mkdir(patch) def backup(): if os.path.exists(pth+'.minecraft/bin'): mkdir(pth+'.minecraft/backup') backup_name = str(datetime.now()) shutil.copytree(pth+'.minecraft/bin', pth+'.minecraft/backup/'+backup_name+'/bin') shutil.copytree(pth+'.minecraft/mods', pth+'.minecraft/backup/'+backup_name+'/mods') if __name__ == "__main__": app = QtGui.QApplication(sys.argv) MainWindow = QtGui.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
p.s. извините за плохой код
![](/static/djangobb_forum/img/smilies/smile.png)