在 Python 中使用 QtCreator 转换的文件

Posted

技术标签:

【中文标题】在 Python 中使用 QtCreator 转换的文件【英文标题】:Using a file converted by QtCreator in Python 【发布时间】:2012-12-15 19:09:08 【问题描述】:

我有一个由命令转换的文件: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'

我不知道用什么替换它。

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

我的代码没有 MainWindow 类。我编辑了这个问题,它看起来是这样的。如果你能说出这段代码放在哪里。 你还有一些问题。您的类 Example 继承自 QWidget,但您的 Ui 文件用于 QMainWindow。只需使用我的代码而不是您的 Example 类,就可以了。【参考方案2】:

在您的 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_())

【讨论】:

以上是关于在 Python 中使用 QtCreator 转换的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将QtCreator项目转换为Visual Studio项目

将 QtCreator 中的 Qt 对象放入 Python 列表中

QTCreator+Python

Pyuic 制作奇怪的按钮

怎样用QtCreator编辑运行python脚本

如何在 qt creator 中将 QString 转换为 int