我尝试在PyQt5中为一个Widget(已设置垂直布局)添加QTextBrowser 具体流程是先删除再添加 并且编写了下面这段代码
其中self.ui是加载的ui文件
def initialize_the_class_schedule(self):
# 先把要加入的数量判断出来
self.lessons_with_slots = [] # 初始化一下
lessons = json.loads(read_file("../data/Curriculum/lessons.json")) # 读一下lessons后面判断
self.daily_config = json.loads(read_file("../data/daily_config.json")) # 读入daily_config
for i in self.daily_config["lessons_list"]:
if i["name"] in lessons["special"] or i["name"] == '课间': # 特殊课程和课间不能入内
continue
self.lessons_with_slots.append(i["name"]) # 加!
# 初始化lessons_list
# 操作的是lessons_list这个widget 先清空其中所有的QTextBrowser
for i in self.ui.lessons_list.findChildren(QtWidgets.QTextBrowser):
i.deleteLater()
text_browser = QtWidgets.QTextBrowser(self.ui.lessons_list)
text_browser.setObjectName("common_course_slots")
text_browser.setText("s") # todo test!!!!!!
self.ui.lessons_list.layout().addWidget(text_browser)
# 添加剩余len lessons_with_slots个
for i in range(1, len(self.lessons_with_slots) + 1):
text_browser = QtWidgets.QTextBrowser(self.ui.lessons_list)
text_browser.setObjectName(f"lesson{i}")
text_browser.setText(str(i)) # todo test!!!!!
self.ui.lessons_list.layout().addWidget(text_browser)
# 最后刷新一下
self.ui.lessons_list.repaint()
遇到的问题


图一是我现在的效果,运行这个函数后整个窗口被强行拉大
图二是我希望实现的效果
尝试过修改最后的for循环的个数,如果添加1-4个text_browser是可以自适应成功的,但是如果再多便会往下拉伸了
如果是从qt设计师添加是正常的,可以自适应的
尝试过的解决方法
尝试过增加伸缩器,设置最大最小的方式 但是并没有任何的作用