1

我有一个由命令转换的文件:pyside-uic -o ui_name.py name.ui我尝试在我的项目中使用它。第一个文件:

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'

我不知道用什么来代替它。

编辑:第一个文件代码已编辑。

4

2 回答 2

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()
于 2012-12-15T19:21:06.770 回答
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_())
于 2012-12-15T19:16:41.260 回答