PyQt4创建简单GUI应用程序时遇到问题

2024-03-29 10:28:10 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我用Python和PyQt4创建了一个简单的windows应用程序。我已经按照QtCreator中的方式设计了我的UI,并从.UI文件创建了必要的.py文件。当我试图实际打开窗口的实例时,但是出现了以下错误:

AttributeError: 'Window' object has no attribute 'setCentralWidget'

所以我回到ui_mainwindow.py文件并注释掉以下行:

MainWindow.setCentralWidget(self.centralWidget)

现在,当我运行main.py时,它将生成窗口的一个实例,但是它将丢失它的网格布局,UI元素只是漂浮在那里。知道我做错了什么吗?

我的main.py文件:

import sys
from PyQt4.QtGui import QApplication
from window import Window

if __name__ == "__main__":

    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

以及我的window.py文件:

from PyQt4.QtCore import Qt, SIGNAL
from PyQt4.QtGui import *

from ui_mainwindow import Ui_MainWindow

class Window(QWidget, Ui_MainWindow):

    def __init__(self, parent = None):

        QWidget.__init__(self, parent)
        self.setupUi(self)

Tags: 文件实例frompyimportselfuimain
1条回答
网友
1楼 · 发布于 2024-03-29 10:28:10

您需要从QMainWindow继承,而不是从QWidget继承。setCentralWidgetQMainWindow的一种方法。

from PyQt4.QtCore import Qt, SIGNAL
from PyQt4.QtGui import *

from ui_mainwindow import Ui_MainWindow

class Window(QMainWindow, Ui_MainWindow):
    def __init__(self, parent = None):

        QMainWindow.__init__(self, parent)
        # or better
        # super(Window, self).__init__(parent)

        self.setupUi(self)

相关问题 更多 >