Voglio dare Focus a un QLineEdit non appena appare ... negli altri casi (tutti i widget della stessa classe) era possibile con .setFocus()
- ma qui non funziona. I miei candidati sono .activateWindow()
e .raise_()
, ma non riuscivo a capire come usarli.PyQt4 Dà Focus to Widget come viene chiamato dalla MainWindow e impostato come CentralWidget?
modifica: Il mio obiettivo è quello di essere in grado di digitare in QLineEdit direttamente dalla tastiera senza la necessità di premere il tasto tab
o fare clic con il mouse in anticipo.
Ecco un esempio delle parti interessate in questione (funzionale):
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()
Se mi stai vedendo terribilmente abusando Python o PyQt4 ... sentitevi liberi di criticare, voglio imparare.
edit: ho trovato nel PySide Docs per .activateWindow
questo "commento" scoraggiante: "In Windows, se si chiama questo quando l'applicazione non è attualmente quello attivo allora non rendere la finestra attiva." - Ma intendo che è la finestra attiva (= MainWindow) è solo un altro Widget nel CentralWidget della finestra attiva. (?)