2015-02-25 12 views
6

Schnelle Frage - Ich arbeite an einer GUI in Pyqt, und es hat zwei Registerkarten. Momentan ist die zweite Registerkarte beim Start immer geöffnet, was ich denke, weil sie eine Funktion ausführt, um einen Dateinamen zu finden, der in einem QLineEdit gespeichert wird. Ich würde wirklich gerne den ersten Tab beim Start erscheinen. Wie würde ich das machen?PyQt - Erzwingen, dass eine Registerkarte zuerst angezeigt wird?

Antwort

9

Wenn Sie Ihre Benutzeroberfläche mit Qt Creator erstellen, wird die Registerkarte, die beim Speichern der Benutzeroberfläche aktiv war, als Standardregisterkarte festgelegt. Sie können dies korrigieren, indem Sie zurück in Qt Creator gehen, die Registerkarte auswählen, die Sie als Standard verwenden möchten, und sie erneut speichern und Ihre .ui zu .py Datei neu erstellen.

Alternativ können Sie QTabWidget s setCurrentIndex(int) verwenden.

Setzen Sie int gleich dem Index der Registerkarte, die Sie anzeigen möchten.

Beispiel:

from PyQt4 import QtGui 
from PyQt4 import QtCore 
import sys 

def main(): 
    app  = QtGui.QApplication(sys.argv) 
    tabs = QtGui.QTabWidget()  
    tab1 = QtGui.QWidget() 
    tab2 = QtGui.QWidget() 
    tab3 = QtGui.QWidget() 
    tabs.addTab(tab1,"Tab 1") 
    tabs.addTab(tab2,"Tab 2") 
    tabs.addTab(tab3,"Tab 3") 
    tabs.setWindowTitle('PyQt QTabWidget Add Tabs and Widgets Inside Tab') 
    tabs.show() 

    # This will set "Tab 2" to be shown when the application launches 
    tabs.setCurrentIndex(1) 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 

Dies wird ein Fenster starten, die "Tab 2" aktiv ist.

Tab 2 is active

Wenn unter der Leitung entfernt wird, dann "Tab 1" beim Start aktiv ist

tabs.setCurrentIndex(1) 
+0

Danke, das regelte es! –

Verwandte Themen