Установка фокуса ввода в pyqt5
Требуется установить фокус ввода на конкретный виджет, пытаюсь это сделать при помощи метода setFocus, но результата нет, в чем может быть проблема?
from PyQt5 import QtWidgets, QtCore
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
lineedit1 = QtWidgets.QLineEdit()
lineedit2 = QtWidgets.QLineEdit()
lineedit2.setFocus()
button1 = QtWidgets.QPushButton('t&ext')
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(lineedit1)
vbox.addWidget(lineedit2)
vbox.addWidget(button1)
window.setLayout(vbox)
window.show()
sys.exit(app.exec_())
Ответы (2 шт):
Автор решения: gil9red
→ Ссылка
Попробуйте установить фокус после добавления виджетов на форму:
from PyQt5 import QtWidgets, QtCore
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
lineedit1 = QtWidgets.QLineEdit()
lineedit2 = QtWidgets.QLineEdit()
button1 = QtWidgets.QPushButton('t&ext')
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(lineedit1)
vbox.addWidget(lineedit2)
vbox.addWidget(button1)
window.setLayout(vbox)
lineedit2.setFocus() # <<<<<<<<<<<<
window.show()
sys.exit(app.exec_())
Автор решения: S. Nick
→ Ссылка
или при создании объекта lineedit добавьте родителя.
import sys
from PyQt5 import QtWidgets, QtCore
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
lineedit1 = QtWidgets.QLineEdit('lineedit1', window) # <--- , window
lineedit2 = QtWidgets.QLineEdit('lineedit2', window) # <--- , window
lineedit2.setFocus()
button1 = QtWidgets.QPushButton('t&ext')
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(lineedit1)
vbox.addWidget(lineedit2)
vbox.addWidget(button1)
window.setLayout(vbox)
window.show()
sys.exit(app.exec_())
