Skip to main content
 首页 » 编程设计

python之Ui_MainWindow 没有属性 'show'

2025年05月04日26jirigala

我正在编写一个有多个窗口的程序。我有一个调用 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 布局。