我想在 QLineEdit 出现后立即将其提供给焦点......在其他情况下(同一类中的所有小部件),它是可能的.setFocus()
- 但在这里这不起作用。我的候选人是.activateWindow()
and .raise_()
,但我不知道如何使用它们。
编辑:我的目标是能够直接从键盘输入 QLineEdit,而无需提前敲击tab
键或用鼠标单击。
以下是相关部分的示例(功能):
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Quiz(QWidget):
def __init__(self):
QWidget.__init__(self)
edit = QLineEdit("Select & Focus")
edit.selectAll()
edit.setFocus() # doesn't work - no effect at all
vbox = QVBoxLayout()
vbox.addWidget(edit)
self.setLayout(vbox)
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
startQuiz = QAction("Start Quiz", self)
startQuiz.triggered.connect(self.startQuizQuestions)
menubar = self.menuBar()
quizMenu = menubar.addMenu("&Quiz")
quizMenu.addAction(startQuiz)
self.setGeometry(300, 300, 500, 400)
self.setWindowTitle("xyz")
self.show()
def startQuizQuestions(self):
newQuiz = Quiz()
self.setCentralWidget(newQuiz)
def main():
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
如果您看到我严重滥用 Python 或 PyQt4 ......请随意批评,我想学习。
编辑:我在PySide Docs中找到了.activateWindow
这个令人沮丧的“评论”:“在 Windows 上,如果您在应用程序当前不是活动的应用程序时调用它,那么它不会使其成为活动窗口。” - 但我的意思是它是活动窗口(= MainWindow),它只是活动窗口的 CentralWidget 中的另一个小部件。(?)