【发布时间】:2020-09-23 08:55:01
【问题描述】:
Windows 上的 Py3 / PySide2 5.13.2
我有两个类:一个时钟发出带有计时器的信号/一个显示打印时间
import PySide2
from PySide2 import QtCore, QtWidgets, QtGui
from PySide2.QtWidgets import QApplication, QWidget
from PySide2.QtCore import Signal, Slot
import time
import sys
class MyClock(QtCore.QObject):
"""
Must inherited QObject to emit a Signal
"""
def __init__(self):
super().__init__()
self.timer = QtCore.QTimer()
self.timer.start(1000.)
def Start(self):
self.timer.timeout.connect(self.Tick)
def Tick(self):
t = time.time()
print ("Emit: ",t)
self.emit(QtCore.SIGNAL("SEND(float)"),t)
class ClockDisplay():
def __init__(self):
super(ClockDisplay,self).__init__()
def Display(self,t):
print ("Received: ", t)
BUG:在将信号连接到显示器之前调用 QTimer 插槽 (Tick) (clock.Start):
if __name__ == "__main__":
app = QApplication(sys.argv)
clock = MyClock()
clock.Start()
display = ClockDisplay()
clock.connect(QtCore.SIGNAL("SEND(float)"),display.Display)
警告信息 ***排序警告*** QMetaObject 'MyClock' 中的信号和槽没有正确排序,这可能会导致问题。 1 插槽记号() 2!信号发送(浮点数) clock.connect(QtCore.SIGNAL("SEND(float)"),display.Display)
显示器没有收到 SEND。
WORKS:在将信号连接到显示器后,调用 QTimer 插槽 (Tick) (clock.Start)。
if __name__ == "__main__":
app = QApplication(sys.argv)
clock = MyClock()
display = ClockDisplay()
clock.connect(QtCore.SIGNAL("SEND(float)"),display.Display)
clock.Start()
【问题讨论】:
标签: python python-3.x pyside2