python - tkinter.scrolledtext.ScrolledText 列跨度问题

标签 python tkinter grid

下面是一段代码,可以帮助展示我想要的内容。 ScrolledText 小部件占据了 3/4 的宽度,但我将其设置为占据 1/2,试图确定如何在中间拆分两个控件。当我注释掉 ScrolledText 小部件并在其位置添加第二个测试列表框并具有相同的网格信息时,它会从中间分开。设置 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)

最佳答案

给列赋予权重并不强制列具有相同的大小,而是强制它们以相同的速率增长。来自 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()

关于python - tkinter.scrolledtext.ScrolledText 列跨度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50372641/

相关文章:

python - 将Python代码转换为Linux可执行文件

python - 覆盆子PI B +上的python 2.7 cvtColor错误215

python - 获取按钮小部件的文本

javascript - 如何从 rowediting 插件的 "allowBlank: false"配置中删除窗口错误消息

javascript - 从 HTMLTableRowElement 中的特定单元格获取子元素并隐藏/删除它们?

Python lambda表达式,使用list中的String作为操作符

Python_Huobi API账户类型,这个参数是什么?

python - MultiIndex 上列级别上的 Pandas GroupBy 和 max

delphi - DBGrid 中的复选框

python - 检查域名是否注册