在 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项目