按enter键时PyQt QLineEdit散焦

2024-04-25 14:07:32 发布

您现在位置:Python中文网/ 问答频道 /正文

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def pressenter():
   print ("Enter pressed")
def window():
   app = QApplication(sys.argv)
   win = QWidget()

   editbox = QLineEdit()
   editbox.setValidator(QDoubleValidator(0.99,99.99,2))

   eform  = QFormLayout()
   eform.addRow("Enter text: ",editbox)

   editbox.editingFinished.connect(pressenter)
   win.setLayout(eform)
   win.setWindowTitle("My Test Window")
   win.show()

   sys.exit(app.exec_())
if __name__ == '__main__':
   window()

我有一个简单的编辑框,我想我的光标退出编辑框时,我按回车键,所以我知道我的输入被接受。这意味着当我想再次编辑时,我需要再次选择编辑框。我试着四处寻找,但我不是一个天生的说英语的人,也许这是我的问题,但我找不到好的答案。在

我现在注意到了两个问题:我需要的验证器是防止按enter键,另一个是presenter()函数可能应该做些什么,但我不知道焦点方法是什么。在


Tags: fromimportappdefsyswindowwinpyqt5
1条回答
网友
1楼 · 发布于 2024-04-25 14:07:32

您可以将焦点设置到主窗口: (只有当您的输入有效时,焦点才会切换,这是您想要的行为吗?)在

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

def pressenter(win):
   win.setFocus()

def window():
   app = QApplication(sys.argv)
   win = QWidget()

   editbox = QLineEdit()
   editbox.setValidator(QDoubleValidator(0.99,99.99,2))

   eform  = QFormLayout()
   eform.addRow("Enter text: ",editbox)

   editbox.editingFinished.connect(lambda: pressenter(win))
   win.setLayout(eform)
   win.setWindowTitle("My Test Window")
   win.show()

   sys.exit(app.exec_())
if __name__ == '__main__':
   window()

您还可以在pressenter函数中进行验证,并在输入不被接受时重置编辑框:

^{pr2}$

相关问题 更多 >