lason123 |
2017-07-13 21:44 |
谢谢楼上解答还有一个问题能否帮忙再看下,可能涉及多线程,我用pyqt4做了个界面,一个button,两个label(label和label1),程序目的:点击button按钮,label和label1上同时并依次显示,黄灯,灰灯,红灯,绿灯,想法是一个按钮的单击事件,连接了两个槽, QtCore.QObject.connect(self.pushButton2, QtCore.SIGNAL(_fromUtf8("clicked()")),self.changePic) QtCore.QObject.connect(self.pushButton2, QtCore.SIGNAL(_fromUtf8("clicked()")),self.changePic2) 但是运行的结果是,第一个label的图片先依次显示黄灯,灰灯,红灯,绿灯,接着再试第二个label1显示黄灯,灰灯,红灯,绿灯, 两个label同时开始显示同样的图片,是不是需要进行多线程编写,应该怎么写,谢谢 [attachment=17470] [attachment=17472][attachment=17473][attachment=17474][attachment=17475] 完整代码如下: from PyQt4.QtGui import QApplication, QLabel, QMovie, QPainter, QFontMetrics,QPixmap
import time
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 __init__(self): self.m=QPixmap("I:/python/icon/shuijing/039/yellow.png") self.x=QPixmap("I:/python/icon/shuijing/039/yellow.png") def setupUi(self, Dialog): Dialog.setObjectName(_fromUtf8("Dialog")) Dialog.resize(654, 535) self.label = QLabel(Dialog) self.label.setGeometry(QtCore.QRect(80, 50, 200, 200)) self.label.setObjectName(_fromUtf8("label")) self.label1 = QLabel(Dialog) self.label1.setGeometry(QtCore.QRect(280, 50, 200, 200)) self.label1.setObjectName(_fromUtf8("label1")) self.pushButton2 = QtGui.QPushButton(Dialog) self.pushButton2.setGeometry(QtCore.QRect(170, 400, 191, 61)) self.pushButton2.setText('start') self.pushButton2.setObjectName(_fromUtf8("pushButton2")) #QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")),self.stop1) QtCore.QObject.connect(self.pushButton2, QtCore.SIGNAL(_fromUtf8("clicked()")),self.changePic) QtCore.QObject.connect(self.pushButton2, QtCore.SIGNAL(_fromUtf8("clicked()")),self.changePic2) #self.label.setMovie(self.m) self.label.setScaledContents(True) self.label.setPixmap(self.m) self.label1.setScaledContents(True) self.label1.setPixmap(self.x) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog)
def changePic(self): self.b=QPixmap("I:/python/icon/shuijing/039/grey.png") self.label.setScaledContents(True) self.label.setPixmap(self.b) self.label.repaint() time.sleep(2) self.n=QPixmap("I:/python/icon/shuijing/039/red.png") self.label.setScaledContents(True) self.label.setPixmap(self.n) self.label.repaint() time.sleep(2) self.h=QPixmap("I:/python/icon/shuijing/039/green.png") self.label.setScaledContents(True) self.label.setPixmap(self.h) #self.label.repaint()""" def changePic2(self): self.y=QPixmap("I:/python/icon/shuijing/039/grey.png") self.label1.setScaledContents(True) self.label1.setPixmap(self.y) self.label1.repaint() time.sleep(2) self.p=QPixmap("I:/python/icon/shuijing/039/red.png") self.label1.setScaledContents(True) self.label1.setPixmap(self.p) self.label1.repaint() time.sleep(2) self.k=QPixmap("I:/python/icon/shuijing/039/green.png") self.label1.setScaledContents(True) self.label1.setPixmap(self.k) #self.label1.repaint() def retranslateUi(self, Dialog): Dialog.setWindowTitle(_translate("Dialog", "Dialog", None)) #self.label.setText(_translate("Dialog", "TextLabel", None))
def main(): app = QtGui.QApplication(sys.argv) Dialog = QtGui.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_()) if __name__ == "__main__": import sys main() |
|