2013-10-07 40 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)时,它隐式地在主小部件上应用布局。

相关问题