python - Ui_MainWindow 没有属性 'show'

标签 python pyqt

我正在编写一个有多个窗口的程序。我有一个调用 Ui 文件(已转换为 .py)的主程序(附件)。主窗口和自定义窗口正确打开(列出的前两个)但第三个或第四个窗口都没有正确打开,给我错误

'Ui_MainWindow' object has no attribute 'show'

主程序;

from PyQt4 import QtCore, QtGui
import sys

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    mainwin = main_menu_ui.Ui_MainWindow()
    mainwin.show()
    sys.exit(app.exec_())

def openCustomise(self):
    customiseOpen = question_set_menu_ui.Ui_MainWindow()
    customiseOpen.show()
    sys.exit(app.exec_())

def openQuiz(self):
    quizOpen = quiz_window_ui.Ui_MainWindow()
    quizOpen.show()
    sys.exit(app.exec_())

def addNewSet(self):
    addNewOpen = question_set_edit_ui.Ui_MainWindow()
    addNewOpen.show()
    sys.exit(app.exec_())

抱歉,如果我遗漏了一些明显的东西,我正在为大学学习 Qt/Python。

最佳答案

您正在导入的自动生成的 UI 类扩展了 object 并且没有 show 方法(自己打开 .py 文件并验证这一点) .

一般来说,您应该像这样构建您的 GUI:

from PyQt4 import QtCore, QtGui
import sys
from layout_file import main_menu_ui

class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = main_menu_ui()
        self.ui.setupUi(self)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    mainwin = MyForm()
    mainwin.show()
    sys.exit(app.exec_())

您从自动生成的 UI 文件导入 UI。您有一个包含 GUI 逻辑的类。然后,它会在其 __init__() 方法中根据您导入的 UI 设置您的 UI 布局。

关于python - Ui_MainWindow 没有属性 'show',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29541524/

相关文章:

python - "Fullscreen is unavailable"在 QWebEngineView 中将 YouTube 视频嵌入为 iframe

python - pytorch 中的 ReduceLrOnPlateau 调度程序可以使用测试集度量来降低学习率吗?

python - Scrapy 从动态表中提取数据

python - 在 Python 中编译搜索模式

python - 在 PyQt 中使用计时器更新标签

python - 获取 QTableView 单元格值

python - 将事件重新发送到新启用的子窗口小部件

python /Django : emulating a multidimensional layer on a MySQL database

java - 尽管使用 WebDriverWait,python selenium 登录错误

python - 如何在使用自定义 QAbstractTableModel 创建 Qtableview 后为单元格着色