Ich möchte Focus einem QLineEdit geben, sobald es erscheint ... in anderen Fällen (alle Widgets innerhalb derselben Klasse) war es möglich mit .setFocus()
- aber hier funktioniert das nicht. Meine Kandidaten sind .activateWindow()
und .raise_()
, aber ich konnte es nicht herausfinden, wie man sie benutzt.PyQt4 Gib dem Widget Widget, wie es vom MainWindow aufgerufen und als CentralWidget festgelegt wird?
edit: Mein Ziel ist es, in die QLineEdit von der Tastatur, ohne dass direkt eingeben, um die tab
-Taste oder klicken Sie mit der Maus im Voraus getroffen.
Hier ein Beispiel für die entsprechenden Teile in Frage (funktionell):
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()
Wenn du mich sehen schrecklich Python oder PyQt4 mißbrauchen ... fühlen Sie sich frei zu kritisieren, ich will lernen.
edit: Ich fand in der PySide Docs für .activateWindow
diese entmutigende "Kommentar": "Unter Windows, wenn Sie dies aufrufen, wenn die Anwendung derzeit nicht die aktive ist dann wird es nicht das aktive Fenster." - Aber ich meine es ist das aktive Fenster (= MainWindow) es ist nur ein anderes Widget im CentralWidget des aktiven Fensters. (?)