小部件大小和添加新小部件的麻烦

时间:2017-10-08 03:43:01

标签: python pyqt widget pyqt5

今晚我遇到了一个涉及在QGridLayout中调整QTextBox大小的问题。代码大多是不言自明的。我将QTextBox设置为在init_ui中向下跨越10个单元格。我的窗口大小为500x500。

def init_ui(self):
    self.message_body = QTextEdit()
    self.layout.addWidget(self.message_body, 2, 0, 9, 7)
    self.show()          

然后在后来的方法中,changeSize,我成功地能够改变QTextEdit的大小。从这个方法我调用下一个方法来加载将出现在445x280 QTextEdit下面的标题。加载这些标题需要将新小部件添加到布局中。这显然是个问题。我不知道这是不是很差的造型。是否应该在init中添加所有小部件?无论哪种方式

self.layout.addWidget(lbl_title, 10, i)

运行。我丢失了我调整大小的QTextEdit。即使我用另一个调整大小函数来跟随它。

以下是涉及的两种方法

def changeSize(self):
    self.message_body.resize(445,280)
    self.loadTitles()

def loadTitles(self):
    titles = Movie.title_library
    for i, my_title in enumerate(titles):
        lbl_title = QLabel(my_title)
    ## This is the line that refreshes the size to span 10x8 units    
        self.layout.addWidget(lbl_title, 10, i)    
    self.message_body.resize(445,280)  

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我需要在恢复之前删除邮件正文窗口小部件。代码看起来像

self.layout.removeWidget(self.message_body) 
self.layout.addWidget(self.message_body,2,0,4,7)