我想用PyQt4构建一个对话框。我的编译环境是Qt4,Python2和PyQt4。 我为我的工作做了一些事情。 1.我使用Qt Designer和名为dialog.ui的ui文件完成我的UI。 2.我使用命令" pyuic -o ui_dialog.py dialog.ui"使python文件名为ui_dialog.py。 ui_dialog.py的代码是
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'dialog.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!
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_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(516, 378)
self.verticalLayoutWidget = QtGui.QWidget(Dialog)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 13, 501, 361))
self.verticalLayoutWidget.setObjectName(_fromUtf8("verticalLayoutWidget"))
self.verticalLayout = QtGui.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
self.label_recieve = QtGui.QLabel(self.verticalLayoutWidget)
self.label_recieve.setObjectName(_fromUtf8("label_recieve"))
self.verticalLayout.addWidget(self.label_recieve)
self.textBrowser_recieve = QtGui.QTextBrowser(self.verticalLayoutWidget)
self.textBrowser_recieve.setObjectName(_fromUtf8("textBrowser_recieve"))
self.verticalLayout.addWidget(self.textBrowser_recieve)
self.label_send = QtGui.QLabel(self.verticalLayoutWidget)
self.label_send.setObjectName(_fromUtf8("label_send"))
self.verticalLayout.addWidget(self.label_send)
self.textEdit_send = QtGui.QTextEdit(self.verticalLayoutWidget)
self.textEdit_send.setObjectName(_fromUtf8("textEdit_send"))
self.verticalLayout.addWidget(self.textEdit_send)
self.horizontalLayout = QtGui.QHBoxLayout()
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.pushButton_send = QtGui.QPushButton(self.verticalLayoutWidget)
self.pushButton_send.setObjectName(_fromUtf8("pushButton_send"))
self.horizontalLayout.addWidget(self.pushButton_send)
self.verticalLayout.addLayout(self.horizontalLayout)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "chat", None))
self.label_recieve.setText(_translate("Dialog", "recieve", None))
self.label_send.setText(_translate("Dialog", "send", None))
self.pushButton_send.setText(_translate("Dialog", "SEND", None))
3.我尝试编写main.py文件并进行编译。 我的main.py代码是
'''
title:chat dialog
author:CCBANG
virsion:0.1
'''
from PyQt4 import QtCore,QtGui
import sys
from ui_dialog import *
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 ChatDialog(QtGui.QDialog):
def __init__(self,parent=None):
QtGui.QDialog.__init__(self,parent)
self=Ui_Dialog()
if __name__=='__main__':
app = QtGui.QApplication(sys.argv)
myqq=ChatDialog()
myqq.show()
sys.exit(app.exec_())
在main.py中,我不知道怎么写" setupUI()"在" Class ChatDialog"
中我如何完成代码?如果你能帮助我,我会很高兴的。感谢
答案 0 :(得分:0)
使用这种使用Qt Designer创建的python文件的方法,通常,您的类将继承Ui_Dialog
类。
class ChatDialog(QtGui.QDialog, Ui_Dialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.setupUi(self)
有时,人们不会继承,但会将其分配给该类的属性:
class ChatDialog(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)