谢谢楼上解答还有一个问题能否帮忙再看下,可能涉及多线程,我用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同时开始显示同样的图片,是不是需要进行多线程编写,应该怎么写,谢谢
完整代码如下:
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()