2012-01-28 9 views
4

メインウィンドウのボタンをクリックしてダイアログを起動しようとしています:これをテストするために変更した(qtdesignerによって生成された)コードは次のとおりです。ボタンをクリックしたときに表示されるshowDial関数。しかし、それは動作しません:QDialogメインウィンドウ(pyQt)から開くことはありません

from PyQt4 import QtCore, QtGui 

try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    _fromUtf8 = lambda s: s 



class Ui_Dialog(object): 
    def setupUi(self, Dialog): 
     Dialog.setObjectName(_fromUtf8("Dialog")) 
     Dialog.setWindowModality(QtCore.Qt.WindowModal) 
     Dialog.resize(400, 300) 
     Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) 

     self.retranslateUi(Dialog) 
     QtCore.QMetaObject.connectSlotsByName(Dialog) 

    def retranslateUi(self, Dialog): 
     pass 

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     MainWindow.setObjectName(_fromUtf8("MainWindow")) 
     MainWindow.resize(309, 148) 
     MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) 
     self.centralwidget = QtGui.QWidget(MainWindow) 
     self.centralwidget.setObjectName(_fromUtf8("centralwidget")) 
     self.pushButton = QtGui.QPushButton(self.centralwidget) 
     self.pushButton.setGeometry(QtCore.QRect(50, 30, 191, 71)) 
     self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Open Dialog", None, QtGui.QApplication.UnicodeUTF8)) 
     self.pushButton.setObjectName(_fromUtf8("pushButton")) 
     MainWindow.setCentralWidget(self.centralwidget) 

     self.retranslateUi(MainWindow) 

     QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked(QAbstractButton*)")), self.showDial) 

     QtCore.QMetaObject.connectSlotsByName(MainWindow) 



    def retranslateUi(self, MainWindow): 
     pass 

    def showDial(self): 
     Dialog = QtGui.QDialog() 
     u = Ui_Dialog() 
     u.setupUi(Dialog) 

     Dialog.exec_() 


if __name__ == "__main__": 
    import sys 
    app = QtGui.QApplication(sys.argv) 
    MainWindow = QtGui.QMainWindow() 
    ui = Ui_MainWindow() 
    ui.setupUi(MainWindow) 
    MainWindow.show() 
    sys.exit(app.exec_()) 

答えて

3

を信号接続に誤りがあり、それは次のようになります。PyQtは4.5+のための

QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.showDial) 

以上ニシキヘビNew-style Signal and Slot syntaxに:

+0

おかげで。それを修正した – flak37

関連する問題