python控件获取焦点_PyQt控件键盘焦点

首先——感谢你们的支持!一个月前我开始研究PyQt。在那段时间里,我遇到了很多问题,事实上总能在这里找到答案。在

直到现在。在

我有一个解决办法,但我认为这是一个愚蠢的,可能有一个适当的方法。我想更好地了解发生了什么事。在

代码如下:from PyQt5.QtCore import *

from PyQt5.QtGui import *

from PyQt5.QtWidgets import *

class FormWidget(QWidget):

def __init__(self, parent):

super(FormWidget, self).__init__(parent)

# Create view with image in it

self.image = QGraphicsPixmapItem(QPixmap())

self.scene = QGraphicsScene()

self.scene.addItem(self.image)

self.view = QGraphicsView(self.scene)

self.hlayout = QHBoxLayout()

self.hlayout.addWidget(self.view)

self.setLayout(self.hlayout)

# self.view.keyPressEvent = self.keyPressEvent

def keyPressEvent(self, event):

key = event.key()

mod = int(event.modifiers())

print(

&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5中,子线程不能直接访问UI控件,因为PyQt5只能在主线程中更新UI。但您可以通过信号和槽机制在主线程和子线程之间进行通信。 以下是一个例子,演示了如何在子线程中获取窗口控件的内容并将其发送到主线程: ```python from PyQt5.QtCore import QThread, pyqtSignal from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit, QPushButton, QLabel import sys class Worker(QThread): finished = pyqtSignal(str) def __init__(self, parent=None): super().__init__(parent) def run(self): # 在这里调用子线程需要执行的任务,例如获取窗口控件内容 content = "子线程获取到的内容" self.finished.emit(content) class Window(QWidget): def __init__(self, parent=None): super().__init__(parent) self.resize(400, 300) self.lineEdit = QLineEdit() self.pushButton = QPushButton("获取内容") self.label = QLabel() layout = QVBoxLayout(self) layout.addWidget(self.lineEdit) layout.addWidget(self.pushButton) layout.addWidget(self.label) self.pushButton.clicked.connect(self.start_worker) self.worker = Worker() self.worker.finished.connect(self.update_label) def start_worker(self): self.worker.start() def update_label(self, content): self.label.setText(content) if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) ``` 在这个例子中,我们创建了一个`Worker`类,它继承自`QThread`类,并包含一个`finished`信号。在`run`方法中,我们可以执行子线程需要执行的任务,例如获取窗口控件内容,并通过`finished`信号将结果发送到主线程。 在`Window`类中,我们创建了一个`Worker`实例,并将其`finished`信号连接到`update_label`方法。在`start_worker`方法中,我们启动子线程。当子线程完成并发出`finished`信号时,`update_label`方法将被调用,主线程中的标签控件将更新为子线程获取到的内容。 您可以根据您的具体需求修改代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值