gpt4 book ai didi

python - 如何在PyQt5中使用按键事件

转载 作者:行者123 更新时间:2023-12-01 07:13:50 31 4
gpt4 key购买 nike

我希望当我在“LE1”中输入数字并按键盘上的“Enter”键时运行“添加”功能。我还希望当我选择行编辑进行编辑时清除其文本。

from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QLineEdit, QLabel, QGridLayout, QWidget, QDialog

class MyWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MyWindow, self).__init__()
centralWidget = QWidget()
self.setCentralWidget(centralWidget)
self.Glayout = QGridLayout(centralWidget)
self.LE1 = QLineEdit('Input Number',self)
self.LE1.keyPressEvent(self.KPE)
Label1 = QLabel('+ 1 =',self)
self.LE2 = QLineEdit(self)
self.Glayout.addWidget(self.LE1)
self.Glayout.addWidget(Label1)
self.Glayout.addWidget(self.LE2)



def Add(self):
Num = float(self.LE1.text())
math = Num + 1
ans = str(math)
self.LE2.setText(ans)



def KPE(self):
if event.key() == Qt.Key_Enter:
self.Add()



if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())

最佳答案

keyPressEvent 是一种方法,如果您以这种方式覆盖它,您将失去默认行为,而且这是不必要的,因为 QLineEdit 有 returnPressed 信号,通知是否按下 Enter

另一方面,将字符串转换为 float 可能会引发异常,因此您应该防止这种情况,另一个更好的选择是使用仅允许使用 QSpinBox 或 QDoubleSpinBox 的数值的小部件,或者至少限制以下值使用适当的 QValidator 输入 QLineEdit。

最后不要使用 math 一词作为变量名,因为这是一个库的名称,可能会在将来给您带来问题。

考虑到上述情况,解决方案是:

from PyQt5.QtWidgets import (
QApplication,
QGridLayout,
QLineEdit,
QLabel,
QMainWindow,
QWidget,
)


class MyWindow(QMainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)

self.LE1 = QLineEdit("Input Number")
self.LE1.returnPressed.connect(self.add)
Label1 = QLabel("+ 1 =")
self.LE2 = QLineEdit()

centralWidget = QWidget()
self.setCentralWidget(centralWidget)

layout = QGridLayout(centralWidget)
layout.addWidget(self.LE1)
layout.addWidget(Label1)
layout.addWidget(self.LE2)

def add(self):
try:
num = float(self.LE1.text())
num += 1
self.LE2.setText(str(num))
except ValueError:
pass


if __name__ == "__main__":
import sys

app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())

关于python - 如何在PyQt5中使用按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58085641/

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