我的目标是在创建label2之前使label1(绿色)可见,并将其隐藏在secondLabel的末尾,但当我运行此代码时,它只显示label2(橙色)。 (在我的实际代码中,加载第二个函数需要很长时间,这就是我添加singleshot的原因)
只有绿色标签可见->;(大约两秒钟)——>;只有橙色标签可见
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
labelList = [None, None]
def empty():
pass
def firstLabel(frame):
label1 = QtWidgets.QLabel(window)
label1.setGeometry(240, 80, 40, 40)
label1.setStyleSheet("background-color: rgb(20, 87, 30)")
labelList[0] = label1
secondLabel(frame)
def secondLabel(frame):
timer = QtCore.QTimer(window)
timer.singleShot(2000, empty)
label2 = QtWidgets.QLabel(window)
label2.setGeometry(20, 40, 200, 120)
label2.setStyleSheet("background-color: rgb(255, 75, 20);")
label2.show()
labelList[1] = label2
labelList[0].hide()
def myFunc(frame):
firstLabel(frame)
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setFixedWidth(300)
window.setFixedHeight(200)
window.setWindowTitle("Window")
window.move(100, 50)
frame = QtWidgets.QFrame(window)
frame.setGeometry(0, 0, 300, 200)
frame.setStyleSheet("background-color: rgb(208, 208, 208);")
myFunc(frame)
window.show()
sys.exit(app.exec_())
我设法用时间模块解决了这个问题。这并不理想,但适用于这种情况
相关问题 更多 >
编程相关推荐