pyqt'Ui_Form'对象没有属性'show'

时间:2014-11-24 19:14:43

标签: python pyqt4

这是我的填充 这段代码是由pyuic生成的 即时通讯使用pyqt4 和python 2.7

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'editgui.ui'
#
# Created: Mon Nov 24 17:33:07 2014
#      by: PyQt4 UI code generator 4.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui
import PyQt4
import sys

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.setEnabled(True)
        Form.resize(1032, 779)
        Form.setMinimumSize(QtCore.QSize(1032, 779))
        Form.setMaximumSize(QtCore.QSize(1032, 779))
        self.textEdit = QtGui.QTextEdit(Form)
        self.textEdit.setGeometry(QtCore.QRect(90, 110, 361, 221))
        self.textEdit.setObjectName(_fromUtf8("textEdit"))
        self.textEdit_2 = QtGui.QTextEdit(Form)
        self.textEdit_2.setGeometry(QtCore.QRect(90, 430, 361, 261))
        self.textEdit_2.setObjectName(_fromUtf8("textEdit_2"))
        self.lineEdit = QtGui.QLineEdit(Form)
        self.lineEdit.setGeometry(QtCore.QRect(90, 380, 361, 20))

...             self.label_6.setGeometry(QtCore.QRect(510,90,46,13))             self.label_6.setObjectName(_fromUtf8( “label_6”))

        self.retranslateUi(Form)
        QtCore.QObject.connect(self.lineEdit_2, QtCore.SIGNAL(_fromUtf8("textChanged(QString)")), self.pushButton.show)
        QtCore.QObject.connect(self.textEdit, QtCore.SIGNAL(_fromUtf8("textChanged()")), self.pushButton.show)
        QtCore.QObject.connect(self.lineEdit, QtCore.SIGNAL(_fromUtf8("textChanged(QString)")), self.pushButton.show)
        QtCore.QObject.connect(self.textEdit_2, QtCore.SIGNAL(_fromUtf8("textChanged()")), self.pushButton.show)
        QtCore.QObject.connect(self.lineEdit_3, QtCore.SIGNAL(_fromUtf8("textChanged(QString)")), self.pushButton.show)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Form", None))
        self.label.setText(_translate("Form", "titel", None))
        self.label_2.setText(_translate("Form", "beschrijving", None))
        self.label_3.setText(_translate("Form", "frans", None))
        self.label_4.setText(_translate("Form", "titel", None))
        self.label_5.setText(_translate("Form", "beschrijving", None))
        self.pushButton.setText(_translate("Form", "save", None))
        self.pushButton_2.setText(_translate("Form", "run", None))
        self.label_6.setText(_translate("Form", "website", None))

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    ex = Ui_Form()
    ex.show
    sys.exit(app.exec_())

结束这是我得到的错误

Traceback (most recent call last):
  File "C:\Users\IT4PROGRESS\Desktop\2dehands gui\output.py", line 99, in <module>
    ex.show
AttributeError: 'Ui_Form' object has no attribute 'show'

我使用的是python 2.7

1 个答案:

答案 0 :(得分:3)

首先,不要编辑pyuic生成的文件。制作另一个.py文件并导入它。这样,您可以创建一个基于show()的类,您可以运行QMainWindow,而不是直接尝试show()生成的UI文件,它将为您构建生成的ui文件。像这样:

import sys
from PyQt4 import QtCore, QtGui
from Ui_Form import Ui_Form

class Main(QtGui.QMainWindow):
    def __init__(self):
        super(Main, self).__init__()

        # build ui
        self.ui = Ui_Form()
        self.ui.setupUi(self)

        # connect signals
        self.ui.some_button.connect(self.on_button)

    def on_button(self):
        print 'Button clicked!'


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    main = Main()
    main.show()
    sys.exit(app.exec_())