Chcę dać Focus QLineEdit, jak tylko się pojawi ... w innych przypadkach (wszystkie Widgety w tej samej klasie) było to możliwe z .setFocus()
- ale tutaj to nie działa. Moi kandydaci to: .activateWindow()
i .raise_()
, ale nie mogłem wymyślić, jak z nich korzystać.PyQt4 Daje skupienie na widżecie, jak nazywa go MainWindow i ustawiony jako CentralWidget?
edytuj: Moim celem jest możliwość wpisania w QLineEdit bezpośrednio z klawiatury bez konieczności uderzania w klawisz tab
lub wcześniej klikania myszą.
Tutaj przykładem odpowiednich części na pytanie (funkcjonalne):
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()
Jeśli widzisz mnie strasznie nadużywają Python lub PyQt4 ... czuć się swobodnie krytykować, chcę się nauczyć.
edytuj: Znalazłem w PySide Docs dla tego zniechęcającego "komentarza": "W Windowsie, jeśli dzwonisz, gdy aplikacja nie jest aktualnie aktywna, to nie sprawi, że będzie to aktywne okno." - Ale chodzi mi o to, że jest to aktywne okno (= MainWindow), to po prostu inny widget w CentralWidget aktywnego okna. (?)