其中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()
尝试过增加伸缩器,设置最大最小的方式 但是并没有任何的作用
不知道你这个问题是否已经解决, 如果还没有解决的话:虽然insertPlainText()
显示多次输入文本时,滑动条是在顶部的。
但通过insertPlainText()
搭配一定函数也可以实现滑动条始终在底部,实现显示最新输出文本。同时,append()
搭配一定函数也可以实现滑动条始终在顶部。这样可以实现更加复杂的程序设计。
def show_text(self):
a = '*'
for i in range(1,50):
text = '第' + str(i) + '次输入内容' + a * i + '\n'
self.textEdit.insertPlainText(text)
self.textEdit.moveCursor(QTextCursor.End) # Start -> 位于顶部,
# self.textEdit.verticalScrollBar().setValue(self.textEdit.verticalScrollBar().maximum()) # minimun() -> 位于顶部
有两种函数开始和insertPlainText()
搭配,一是self.textEdit.moveCursor(QTextCursor.End)
,把光标置于底部
二是self.textEdit.verticalScrollBar().setValue(self.textEdit.verticalScrollBar().maximum())
,直接把滑动条始终最大值,即底部
结果:
。
。
。
。
根据参考资料和问题描述,可以推断出问题大致为:在添加QTextBrowser之前,是否已经为Widget设置了垂直布局,是否为QTextBrowser设置了相关的宽和高属性?可以尝试使用“addWidget”方法添加QTextBrowser,可以让它自动适应Widget的大小。同时,需要提供代码片段以便更好地理解编码逻辑。
解决方案如下:
1.首先,确保为Widget设置了垂直布局,并在布局中添加了所需的控件,包括QTextBrowser。
2.若需对QTextBrowser控件的大小进行设置,可以使用以下代码:
text_browser.setFixedSize(width, height) # 设置宽高
或者使用以下代码:
text_browser.setFixedWidth(width) # 设置宽
text_browser.setFixedHeight(height) # 设置高
3.使用“addWidget”方法添加QTextBrowser控件。
vbox_layout.addWidget(text_browser) # 将控件添加到布局中
完整的代码实现如下:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTextBrowser
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QTextBrowser Example')
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 400, 300) # 设置窗口大小和位置
# 创建垂直布局对象
vbox_layout = QVBoxLayout(self)
# 创建QTextBrowser对象
text_browser = QTextBrowser(self)
text_browser.setFixedSize(200, 100) # 设置宽高
text_browser.setPlainText('This is a QTextBrowser.') # 设置文本
# 将QTextBrowser添加到布局中
vbox_layout.addWidget(text_browser)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
在这个例子中,我们首先创建了一个QVBoxLayout布局,在布局中添加了一个QTextBrowser控件,并对其进行了相关的属性设置和文本添加。最后将布局添加到窗口中,实现了一个基本的文本浏览器窗口。
值得注意的是,在使用垂直布局对象添加多个控件时,它们会依次排列,按添加的顺序从上到下分别显示。如果我们不对QTextBrowser控件进行宽和高的设置,它会默认占据所有的可用空间,这时我们可以使用“addWidget”方法自动调整大小。
完整的代码如下:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTextBrowser
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QTextBrowser Example')
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 400, 300) # 设置窗口大小和位置
# 创建垂直布局对象
vbox_layout = QVBoxLayout(self)
# 创建QTextBrowser对象
text_browser = QTextBrowser(self)
text_browser.setPlainText('This is a QTextBrowser.') # 设置文本
# 将QTextBrowser添加到布局中
vbox_layout.addWidget(text_browser)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
以上就是我对这个问题的解答,如果有不理解的地方,还请指出。