Я должен установить фокус на QPushButton после нажатия кнопки ввода в QLineEdit, и я могу добиться того же, но проблема в том, что действие, которое должно быть выполнено при нажатии кнопки, также запускается. Хотя я не нажимаю кнопку, а только вызываю setFocus (). Вот код:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QPushButton, QMessageBox, QLineEdit, QDialog
import sys, time
class App(QDialog):
def __init__(self):
super().__init__()
self.title = 'PushButton Set Focus'
self.left = 200
self.top = 200
self.width = 320
self.height = 200
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.lineEdit = QLineEdit('Press Enter', self)
self.lineEdit.move(100, 30)
self.lineEdit.returnPressed.connect(self.__setFocusOnButton)
self.button = QPushButton('Click me', self)
self.button.move(100, 70)
self.button.setAutoDefault(True)
self.button.clicked.connect(self.on_click)
self.show()
def on_click(self):
print('Button Clicked')
def __setFocusOnButton(self):
self.button.setFocus()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
Пожалуйста, дайте мне знать, если есть какие-то методы для setFocus без нажатия кнопки.