2013-10-07 37 views
0

這段代碼中的錯誤是什麼使得小部件根據窗口大小不能擴展?小部件不根據窗口大小擴展

class FeedbackWindow(QWidget): 
    def __init__(self): 
     QWidget.__init__(self) 
     self.main_layout = QVBoxLayout(self) 
     self.main_widget = QWidget(self) 
     self.main_widget.setLayout(self.main_layout) 
     self.title_label = QLabel("Tell us what you think:") 
     self.feedback_text_editor = QTextEdit() 
     self.send_button = QPushButton("Send") 

     self.main_layout.addWidget(self.title_label) 
     self.main_layout.addWidget(self.feedback_text_editor) 
     self.main_layout.addWidget(self.send_button) 

     self.setWindowTitle("Feedback") 
     self.setGeometry(200,120,300,300) 

    if __name__ == "__main__": 

     app = QApplication(sys.argv) 
     w = FeedbackWindow() 
     w.show() 
     app.exec_() 

主佈局和小部件連接到自己,所以它應該採取其維度。

回答

1

該代碼不使用self.main_widget。刪除self.main_widget

import sys 

from PyQt4.QtCore import * 
from PyQt4.QtGui import * 

class FeedbackWindow(QWidget): 
    def __init__(self): 
     QWidget.__init__(self) 
     self.main_layout = QVBoxLayout(self) 
     #self.main_widget = QWidget(self)    # main_widget is not used. 
     #self.main_widget.setLayout(self.main_layout) 
     self.setLayout(self.main_layout) 
     self.title_label = QLabel("Tell us what you think:") 
     self.feedback_text_editor = QTextEdit() 
     self.send_button = QPushButton("Send") 

     self.main_layout.addWidget(self.title_label) 
     self.main_layout.addWidget(self.feedback_text_editor) 
     self.main_layout.addWidget(self.send_button) 

     self.setWindowTitle("Feedback") 
     self.setGeometry(200,120,300,300) 

if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    w = FeedbackWindow() 
    w.show() 
    app.exec_() 
1

刪除

self.main_widget = QWidget(self) 
self.main_widget.setLayout(self.main_layout) 

你不需要他們。在你的實現中,佈局是在self.main_widget上設置的,它不是主要的部件。你的主要部件是你的FeedbackWindows本身。當你打電話給self.main_layout = QVBoxLayout(self)時,它隱式地在主小部件上應用佈局。

相關問題