Bir QLineEdit'e en kısa sürede görünmesini istiyorum ... diğer durumlarda (aynı sınıftaki tüm Widget'lar) .setFocus()
ile mümkün oldu - ama işte bu işe yaramıyor. Adaylarım .activateWindow()
ve .raise_()
, ancak bunları nasıl kullanacağımı anlayamadım.PyQt4 MainWindow tarafından çağrıldığı ve CentralWidget olarak ayarlandığı gibi Widget'a Odak Verilsin mi?
düzenleme: Hedefim, QLineEdit'e klavyeden doğrudan tab
anahtarını basmadan veya fare ile önceden tıklamadan yazabilmenizdir. İşte
soru (fonksiyonel) ilgili bölümden bir örnek:
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 veya PyQt4 kötüye korkunç beni görüyorsanız ... eleştirmek çekinmeyin, ben öğrenmek istiyorum.
düzenleme: .activateWindow
için PySide Docs bu "" yorumunu cesaret kırıcı olarak buldum: "Uygulamada şu anda etkin olan uygulama değilse, Windows'da, etkin pencereyi yapmaz." - Ama ben aktif pencere (= MainWindow) olduğu etkin pencerenin CentralWidget içinde başka bir Widget olduğu anlamına gelir. (?)