窗口小部件不会根据窗口大小进行扩展

2024-10-01 00:21:27 发布

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

这段代码中有什么错误阻止小部件根据窗口大小进行扩展

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_()

主布局和小部件连接到self,因此它应该具有自己的维度


Tags: textselfsendtitleinitmain部件widget
2条回答

除去

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

你不需要它们。在您的实现中,布局是在self.main_小部件上设置的,它不是主小部件。您的主要小部件是反馈窗口本身。当您调用self.main_layout = QVBoxLayout(self)时,它会隐式地在主小部件上应用布局

代码不使用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_()

相关问题 更多 >