tkinter.scrolledtext.scrolled文本列跨问题

2024-03-28 12:29:00 发布

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

下面是一段代码来帮助显示我想要的。ScrolledText小部件占据了宽度的3/4,但我将其设置为占用1/2,试图确定如何从中间拆分两个控件。当我注释掉ScrolledText小部件并在它的位置添加第二个测试列表框时,它会被拆分到中间。设置滚动文本小部件有什么不同吗?在

page.rowconfigure(1, weight=1)
page.columnconfigure(0, weight=1)
page.columnconfigure(6, weight=1)

lb_reports = Listbox(page, selectmode=SINGLE)
lb_reports.grid(row=1, column=0, columnspan=5, sticky=W + N + S + E, pady=5, padx=5)

# Following list box is here as a test, it does split down the middle of screen as expected.
# self.lb_reports1 = Listbox(page, selectmode=SINGLE)
# self.lb_reports1.grid(row=1, column=5, columnspan=5, sticky=W + N + S + E, pady=5, padx=5)

# this widget takes right 3/4 of screen instead of 1/2
st_test = tkinter.scrolledtext.ScrolledText(page)
st_test.grid(row=1, column=6, columnspan=5, sticky=W + N + S + E, pady=5, padx=5)

Tags: oftest部件pagecolumngridrowweight
1条回答
网友
1楼 · 发布于 2024-03-28 12:29:00

赋予列一个权重并不会强制列具有相同的大小,而是强制它们以相同的速率增长。来自Effbot

weight=
A relative weight used to distribute additional space between columns. A column with the weight 2 will grow twice as fast as a column with weight 1. The default is 0, which means that the column will not grow at all.

然后从Text widget(ScrolledText是基于它的)的文档中可以看到小部件的默认宽度是80(字符,而不是像素!),而Listbox的默认宽度为20(同样是字符)。在

因此,虽然两列的增长速度相同,但它们的起始大小并不相同。在

现在,如果给两个小部件相同的宽度值,您可能会看到它们仍然不是相同的宽度。这可能是因为文本和列表框小部件的字体不同。如果您给它们相同的宽度相同的字体,它们一开始应该具有相同的宽度,因此它们在增长时将保持相同的宽度:

from tkinter import *
from tkinter.scrolledtext import *

page = Tk()
page.rowconfigure(1, weight=1)
page.columnconfigure(0, weight=1)
page.columnconfigure(6, weight=1)

lb_reports = Listbox(page, selectmode=SINGLE, font=('Arial', 12), width=20)
lb_reports.grid(row=1, column=0, columnspan=5, sticky=W + N + S + E, pady=5, padx=5)

st_test = ScrolledText(page, font=('Arial', 12), width=20)
st_test.grid(row=1, column=6, columnspan=5, sticky=W + N + S + E, pady=5, padx=5)

page.mainloop()

相关问题 更多 >