gpt4 book ai didi

python - QLineEdit 不使用 QKeyEvent 更新文本

转载 作者:行者123 更新时间:2023-11-28 22:40:26 27 4
gpt4 key购买 nike

我正在尝试实现一个虚拟键盘小部件。我能想到的最简单的方法是创建 QKeyEvent 实例并使用 QApplication.postEvent() 将它们发送到焦点小部件。

首先,我正在尝试更新我拥有的固定 QLineEdit,因此代码是:

   self.pushButton_A.clicked.connect(self.virtualKeyPress)

[...]

def virtualKeyPress(self):
self.keyPress = QKeyEvent(QEvent.KeyPress, Qt.Key_A, Qt.NoModifier)
QApplication.postEvent(self.lineEdit, self.keyPress)

但是 QLineEdit 实例不会在 GUI 中更新它的文本!

线索?干杯,谢谢!

已解决:(感谢 HeyYO)

   self.pushButton_A.clicked.connect(self.virtualKeyPress)

[...]

def virtualKeyPress(self):
self.keyPress = QKeyEvent(QEvent.KeyPress, Qt.Key_A, Qt.NoModifier, 'A')
QApplication.postEvent(self.lineEdit, self.keyPress)

在我的例子中,代替 Qt.Key_A 我将该参数设置为 0,以便我可以将所有按钮连接到 virtualKeyPress 方法。我还必须将所有按钮的焦点策略设置为“无焦点”(直接在 Qt Designer 中完成)。最终代码如下:

def virtualKeyPress(self):
self.keyPressed = QString(self.sender().text())
self.keyPress = QKeyEvent(QEvent.KeyPress, 0, Qt.NoModifier, self.keyPressed)
self.focusWidget = QApplication.focusWidget()
QApplication.postEvent(self.focusWidget, self.keyPress)

最佳答案

您是否尝试过指定文本参数;

self.keyPress = QKeyEvent(QEvent.KeyPress, Qt.Key_A, Qt.NoModifier, "A")

它对我有用,在 Qt5&C++ 中,所以我假设它也对你有用。

关于python - QLineEdit 不使用 QKeyEvent 更新文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33676589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com