2012-12-15 43 views
1

我有一個文件被命令轉換爲:pyside-uic -o ui_name.py name.ui,我嘗試在我的項目中使用它。 第一個文件:在Python中使用由QtCreator轉換的文件

class Example(QWidget): 
    def __init__(self): 
     super(Example, self).__init__() 
     self.initUI() 

    def initUI(self): 
     self.ui_window = ui_window.Ui_MainWindow() 

     self.btn5 = QPushButton(QIcon(),"Open", self) 
     self.btn5.move(0, 20) 
     self.btn5.resize(70, 20) 
     self.btn5.clicked.connect(self.doAction5) 

    def doAction5(self): 
     self.ui_window.Show() 

二(ui_window.py):

class Ui_MainWindow(object): 
....... 
    def Show(self): 
    self.show() 

當我執行該項目,並按下按鈕,有一個錯誤:

AttributeError: 'Ui_MainWindow' object has no attribute 'show' 

我沒有想法什麼來取代它。

編輯: 編輯第一個文件代碼。

回答

2

運行pyside-uic -o ui_name.py name.ui之後,您將獲得一個用於界面的python文件ui_name.py。 請勿更改此文件中的任何內容。這個文件是要導入你的主代碼,像這樣:

from ui_name import Ui_MainWindow 

class MainWindow(QMainWindow, Ui_MainWindow): 
    def __init__(self): 
     super(MainWindow, self).__init__() 
     self.setupUi(self) 

     self.btn5 = QPushButton(QIcon(),"Open", self) 
     self.btn5.move(0, 20) 
     self.btn5.resize(70, 20) 
     self.btn5.clicked.connect(self.doAction5) 

     self.show() 
+0

我的代碼沒有MainWindow類。我編輯了這個問題,它的外觀如何。如果你可以知道把代碼放在哪裏。 – Kamil

+0

你還有一些問題。您的類示例繼承自QWidget,但您的Ui文件是針對QMainWindow的。只需使用我的代碼而不是你的'Example'類,你應該沒問題。 – BrtH

0

window.py文件試試這個代碼:

from Ui_MyWindow import Ui_myWindow 

class myWindow(QMainWindow, Ui_myWindow): 
    def __init__(self, parent=None): 
     super(myWindow, self).__init__(parent) 
     self.setupUi(self) 

UI文件的名稱應該是這樣的Ui_MyWindow.py,並且要導入從那裏應該是這樣的Ui_myWindow

類要顯示您的窗口,請在window.py的末尾添加此代碼:

if __name__ == "__main__": 
    import sys 

    app = QApplication(sys.argv) 
    main = myWindow() 
    main.show() 
    sys.exit(app.exec_()) 
相關問題