2013-11-21 27 views
2
解決Pyside Qt控件

我已經創建了Qt設計的GUI,並通過正確方法從文件的.ui通過Python

訪問它
def loadUiWidget(uifilename, parent=None): 
    loader = QtUiTools.QUiLoader() 
    uifile = QtCore.QFile(uifilename) 
    uifile.open(QtCore.QFile.ReadOnly) 
    ui = loader.load(uifile, parent) 
    uifile.close() 
    return ui 

MainWindow = loadUiWidget("form.ui") 
MainWindow.show() 
children = MainWindow.children() 
button1 = MainWindow.QPushButton1 

「孩子」確實已經包含小部件「QPushButton1」,「QTextBrowser1 「在UI中創建,但不應該通過recoursive findChildren()方法訪問?

什麼是訪問.ui文件小部件的優雅方式?

參考文獻: Find correct instanceLoad .ui file

回答

3

由於在Qt Designer中部件的名稱必須是唯一的,層次(至少獲取對窗口小部件)是平的(沒有衝突的風險),所以最好的辦法就是通過訪問他們:

loader = QtUiTools.QUiLoader() 
ui = loader.load('filename.ui', parent) 
my_widget = ui.my_widget_name 

這地方叫「my_widget_name」在Qt Designer中的變量my_widget小部件的參考。

我會說上面是最多pythonic訪問加載.ui文件時創建的小部件的方式。

相關問題