2012-04-18 31 views
11

vì vậy tôi đang tạo một ứng dụng cửa sổ đơn giản với Python và PyQt4. Tôi đã thiết kế giao diện người dùng theo cách tôi muốn trong QtCreator và tôi đã tạo tệp .py cần thiết từ tệp .ui. Khi tôi cố gắng để thực sự mở một thể hiện của cửa sổ tuy nhiên tôi cho các lỗi sau:PyQt4 gặp sự cố khi tạo ứng dụng GUI đơn giản

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

Vì vậy, tôi quay trở lại vào tập tin ui_mainwindow.py và nhận xét ra các dòng sau:

MainWindow.setCentralWidget(self.centralWidget) 

Bây giờ khi tôi chạy main.py nó sẽ tạo ra một thể hiện của cửa sổ nhưng nó mất bố trí lưới của nó và các yếu tố giao diện người dùng chỉ là loại nổi ở đó. Bất kỳ ý tưởng những gì tôi đang làm sai?

tập tin của tôi 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_()) 

và tập tin window.py tôi:

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) 

Trả lời

20

Bạn cần phải kế thừa từ QMainWindow, không QWidget. setCentralWidget là phương thức 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) 
Các vấn đề liên quan