所以我用Python和PyQt4创建一个简单的Windows应用程序.我在QtCreator中按照我想要的方式设计了我的UI,并且我从.ui文件创建了必要的.py文件.当我尝试实际打开窗口的实例但是我给出了以下错误:
AttributeError: 'Window' object has no attribute 'setCentralWidget'
Run Code Online (Sandbox Code Playgroud)
所以我回到ui_mainwindow.py文件并注释掉以下行:
MainWindow.setCentralWidget(self.centralWidget)
Run Code Online (Sandbox Code Playgroud)
现在,当我运行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_())
Run Code Online (Sandbox Code Playgroud)
和我的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)
Run Code Online (Sandbox Code Playgroud)
Ava*_*ris 20
你需要继承QMainWindow,而不是QWidget.setCentralWidget是一种方法QMainWindow.
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12718 次 |
| 最近记录: |