我想在QLineEdit出現後立即將焦點...在其他情況下(同一班級內的所有小工具),可以使用.setFocus()
- 但這裏不起作用。 我的候選人是.activateWindow()
和.raise_()
,但我無法弄清楚如何使用它們。PyQt4將焦點集中到Widget,因爲它被MainWindow調用並設置爲CentralWidget?
編輯:我的目標是能夠直接從鍵盤輸入到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中的其他窗口小部件。 (?)