gpt4 book ai didi

python - 使用按键在 QLineEdit 中输入文本并在 PyQt4 中发出信号

转载 作者:行者123 更新时间:2023-12-01 05:26:14 25 4
gpt4 key购买 nike

使用 PyQt 4.8 和 Python 3.3

我正在使用 this example 的修改版本:虽然此示例在按下 Tab 时发出信号并将任意文本添加到第二个 QLineEdit,但我希望我的脚本在任何按键上发出信号,将任意信号文本添加到第二个 QLineEdit,并将键入的字符添加到第一个 QLineEdit (假设它是有效的 ASCII 字符)。

每当我尝试使用任何按键作为信号时,我都无法再抓取该文本以输入到 QLineEdit 中。这是我到目前为止所拥有的以及我陷入困境的地方:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

####################################################################
def main():
app = QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())

####################################################################
class MyWindow(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)

# create objects
self.la = QLabel("Type in this box:")
self.le = MyLineEdit()
self.la2 = QLabel("\nLook here:")
self.le2 = QLineEdit()
self.char = MyLineEdit.char # HOW CAN I GET THIS WORKING?

# layout
layout = QVBoxLayout()
layout.addWidget(self.la)
layout.addWidget(self.le)
layout.addWidget(self.la2)
layout.addWidget(self.le2)
self.setLayout(layout)

# connections
self.connect(self.le, SIGNAL("keyPressed"),
self.update)

def update(self):
newtext1 = self.le.text() + self.char
newtext2 = self.le2.text() + "kP "
self.le.setText(newtext1)
self.le2.setText(newtext2)

####################################################################

class MyLineEdit(QLineEdit):
def __init__(self, *args):
QLineEdit.__init__(self, *args)

def event(self, event):
if (event.type() == QEvent.KeyPress):
self.emit(SIGNAL("keyPressed"))
self.char = "%c" % (event.key())
return True

return QLineEdit.event(self, event)

####################################################################
if __name__ == "__main__":
main()

非常感谢任何和所有帮助。 PyQt4 中是否有某些东西允许我使用按键作为信号和输入文本,或者我的 Python 已关闭?

最佳答案

问题1:您在设置self.char之前发出信号:

class MyLineEdit(QLineEdit):
def __init__(self, *args):
QLineEdit.__init__(self, *args)
self.char = ""

def event(self, event):
if (event.type() == QEvent.KeyPress):
self.char = "%c" % (event.key()) #this line above the next
self.emit(SIGNAL("keyPressed"))
return True

return QLineEdit.event(self, event)

问题 2:在 MyLineEdit 对象中使用 char 值:

    def update(self):
newtext1 = self.le.text() + self.le.char
newtext2 = self.le2.text() + "kP "
self.le.setText(newtext1)
self.le2.setText(newtext2)

最后你不需要 MyWindow 上的 self.char

关于python - 使用按键在 QLineEdit 中输入文本并在 PyQt4 中发出信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21291467/

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