2011-12-13 9 views
5

Naprawdę ciężko jest łączyć gniazda od Python do Qt DesignerUI plików. Byłem przez wszystkie tutoriale mogę znaleźć na PySide (np http://zetcode.com/gui/pysidetutorial/eventsandsignals/)Używanie plików QUiLoader i UI w PySide do dynamicznego tworzenia interfejsu użytkownika w czasie wykonywania

jest dość łatwe, jeśli skonfigurować GUI w kodzie, ale my naprawdę chciałby używać Qt Designer UI i plików.

Kilka innych wątków wskazuje na użycie pyuic do konwersji plików .ui na .py, ale jeśli jest to możliwe, naprawdę chciałbym to zrobić w czasie wykonywania.

Oto mój kod do tej pory. nie mam pojęcia jak podłączyć connectBtn do Connect w pliku ui:

def initUI(self):  

    loader = QUiLoader() 
    file = QFile("designer_test.ui") 
    file.open(QFile.ReadOnly) 
    myWidget = loader.load(file, self) 
    #print(dir(myWidget)) 
    file.close() 

    layout = QtGui.QVBoxLayout() 
    layout.addWidget(myWidget) 
    self.setLayout(layout) 

    connectBtn = QtGui.QPushButton("Connect", self) 

    connectBtn.clicked.connect(self.connectClicked) 

    myWidget.setWindowTitle('Window') 
    myWidget.show() 

def connectClicked(self): 
    print("works") 

Odpowiedz

3

Czy można sprawdzić na tej stronie: Using a Designer UI File in Your Application

to dla C++, ale myślę, że pojęcia są takie same jak co próbujesz zrobić w Pythonie.

Zgodnie z tą stroną, aby uzyskać widżety tworzone przez plik Ui, ​​należy wywołać metodę findChild().

Również, this question.

0

Zrobiłem to auto-connector, aby mi pomóc z tym ... proszę spojrzeć na to.

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. – cpburnz