2016-04-10 11 views
0

Mevcut pencereden yeni bir pencere açmak istiyorum.pyqt4'de, varolan pencereden nasıl yeni pencere açarım?

Kaynak kodum iki işlevi vardır.

  • tek işlev: Düğmeye tıklandığında, Dosya İletişim Kutusu açılır. başka bir işlev: Başka bir tuşa tıklandığında, Yeni Pencere açıldı. New penceresine istediğinizde

Ama hata iletisi oluşur:

Traceback (son En son arama): Dosya "C: \ Users \ Han \ Desktop \ projesini \ prototip \ newwindow.py", check_start self.w.show satır 61,() AttributeError: 'Ui_dialog' nesne hiçbir özelliği vardır 'şov'

from PyQt4 import QtCore, QtGui 

try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
def _fromUtf8(s): 
    return s 

try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig) 

class Ui_Form(object): 
    def setupUi(self, Form): 
     Form.setObjectName(_fromUtf8("Form")) 
     Form.resize(518, 349) 
     self.label = QtGui.QLabel(Form) 
     self.label.setGeometry(QtCore.QRect(40, 40, 141, 16)) 
     self.label.setObjectName(_fromUtf8("label")) 
     self.label_2 = QtGui.QLabel(Form) 
     self.label_2.setGeometry(QtCore.QRect(400, 330, 141, 16)) 
     self.label_2.setObjectName(_fromUtf8("label_2")) 
     self.horizontalLayoutWidget = QtGui.QWidget(Form) 
     self.horizontalLayoutWidget.setGeometry(QtCore.QRect(70, 200, 381, 31))   self.horizontalLayoutWidget.setObjectName(_fromUtf8("horizontalLayoutWidget")) 
     self.horizontalLayout = QtGui.QHBoxLayout(self.horizontalLayoutWidget) 
     self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) 
     self.textEdit = QtGui.QTextEdit(self.horizontalLayoutWidget) 
     self.textEdit.setObjectName(_fromUtf8("textEdit")) 
     self.horizontalLayout.addWidget(self.textEdit) 
     self.pushButton = QtGui.QPushButton(self.horizontalLayoutWidget) 
     self.pushButton.setObjectName(_fromUtf8("pushButton")) 
     self.horizontalLayout.addWidget(self.pushButton) 
     self.pushButton_2 = QtGui.QPushButton(Form) 
     self.pushButton_2.setGeometry(QtCore.QRect(230, 270, 75, 23)) 
     self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) 

     self.retranslateUi(Form) 
     QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.file_open) 
     QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL(_fromUtf8("clicked()")), self.check_start) 
     QtCore.QMetaObject.connectSlotsByName(Form) 

    def retranslateUi(self, Form): 
     Form.setWindowTitle(_translate("Form", "Off_Strip", None)) 
     self.label.setText(_translate("Form", "123", None)) 
     self.label_2.setText(_translate("Form", "@Copyright MokLab", None)) 
     self.pushButton.setText(_translate("Form", "123", None)) 
     self.pushButton_2.setText(_translate("Form", "123!", None)) 

    def file_open(self): 
     fname = QtGui.QFileDialog.getOpenFileName() 
     f = open(fname, 'r') 
     f.close() 

    def check_start(self): 
     self.w = Ui_dialog() 
     self.w.show() 

class Ui_dialog(object): 
    def setupUi(self, dialog): 
     dialog.setObjectName(_fromUtf8("dialog")) 
     dialog.resize(400, 300) 
     self.pushButton = QtGui.QPushButton(dialog) 
     self.pushButton.setGeometry(QtCore.QRect(190, 130, 75, 23)) 
     self.pushButton.setObjectName(_fromUtf8("pushButton")) 
     self.radioButton = QtGui.QRadioButton(dialog) 
     self.radioButton.setGeometry(QtCore.QRect(30, 70, 90, 16)) 
     self.radioButton.setObjectName(_fromUtf8("radioButton")) 
     self.radioButton_2 = QtGui.QRadioButton(dialog) 
     self.radioButton_2.setGeometry(QtCore.QRect(40, 110, 90, 16)) 
     self.radioButton_2.setObjectName(_fromUtf8("radioButton_2")) 

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

    def retranslateUi(self, dialog): 
     dialog.setWindowTitle(_translate("dialog", "Form", None)) 
     self.pushButton.setText(_translate("dialog", "PushButton", None)) 
     self.radioButton.setText(_translate("dialog", "RadioButton", None)) 
     self.radioButton_2.setText(_translate("dialog", "RadioButton", None)) 

if __name__ == "__main__": 
    import sys 
    app = QtGui.QApplication(sys.argv) 
    Form = QtGui.QWidget() 
    ui = Ui_Form() 
    ui.setupUi(Form) 
    Form.show() 
    sys.exit(app.exec_()) 

cevap

0

bir Ui_dialog nesne olarak w ilan ettik çizgi self.w.show, aramayı dener Ui_dialog içinde show örnek değişkeni Çalışmıyor, çünkü hiçbir zaman show adlı bir işlevi tanımlamamışsınızdır.

Ui_dialog sınıfı için object miras almanıza yardımcı olmuyor. Bu sınıf için muhtemelen QtGui.QDialog'u miras almalı ve sınıfınızı buna göre yeniden yazmalısınız.