2015-02-25 8 views
6

Szybkie pytanie - Pracuję nad GUI w pyqt i ma dwie zakładki. W tej chwili druga karta jest zawsze otwarta przy starcie, co moim zdaniem dzieje się tak dlatego, że uruchamia funkcję znajdowania pliku, który ma zostać umieszczony w QLineEdit. Naprawdę bardzo chciałbym, aby pierwsza karta pojawiła się na starcie. Jak miałbym to zrobić?PyQt - wymuszenie pojawienia się jednej karty?

Odpowiedz

9

Jeśli tworzysz swój interfejs użytkownika przy pomocy Qt Creator, zakładka, która była aktywna podczas zapisywania interfejsu użytkownika, jest ustawiona jako karta domyślna. Możesz to poprawić, przechodząc z powrotem do Qt Creator, wybierając tę ​​kartę, która ma być domyślną, i zapisując ją i odtwarzając plik .ui na .py.

Alternatywnie można użyć QTabWidget s setCurrentIndex(int).

Ustaw int równy indeksowi karty, którą chcesz wyświetlić.

Przykład:

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() 

To uruchomi okno, które ma "Tab 2" aktywne.

Tab 2 is active

Jeśli poniżej linii zostanie usunięty, a następnie "Zakładka 1" jest aktywna w momencie wprowadzenia

tabs.setCurrentIndex(1) 
+0

Dziękuję, że naprawił! –