小编Ska*_*dix的帖子

Windows的低级键盘输入

可以使用哪些win32调用来全局检测按键事件(不仅仅是1个窗口,我希望每次按下一个键时都会收到消息),来自Windows服务?

keyboard winapi low-level

5
推荐指数
1
解决办法
5633
查看次数

如何在 PyQt 中使用 QThreads 在两个方向设置信号和插槽?

这是一个基于 ekhumoro在这里这里的回答的后续问题。


我想明白,当一个插槽被正确定义pyqtSlot并分配给QThread(例如 with moveToThread())时,它将在这个 QThread 中执行,而不是在调用者中执行。此外,还需要与Qt.QueuedConnection或进行连接Qt.AutoConnection

我写了代码来测试这个。我的目标是实现一些非常简单的东西: 在此处输入图片说明
带有按钮的 GUI,它开始一些耗时的工作并返回结果以显示在 GUI 中。

from PyQt5.Qt import *

class MainWindow(QMainWindow):
    change_text = pyqtSignal(str)

    def __init__(self):
        super().__init__()
        self.button = QPushButton('Push me!', self)
        self.setCentralWidget(self.button)

        print('main running in:', QThread.currentThread())
        thread = Thread(change_text, self)
        thread.start()
        self.button.clicked.connect( thread.do_something_slow, Qt.QueuedConnection)
        self.change_text.connect(self.display_changes, Qt.QueuedConnection)

    @pyqtSlot(str)
    def display_changes( self, text ):
        self.button.setText(text)

class Thread(QThread):
    def __init__(self, signal_to_emit, parent):
        super().__init__(parent)
        self.signal_to_emit = signal_to_emit
        #self.moveToThread(self) #doesn't help

    @pyqtSlot()
    def do_something_slow( …
Run Code Online (Sandbox Code Playgroud)

python pyqt qthread qt-signals pyqt5

2
推荐指数
1
解决办法
1844
查看次数

标签 统计

keyboard ×1

low-level ×1

pyqt ×1

pyqt5 ×1

python ×1

qt-signals ×1

qthread ×1

winapi ×1