我想在tkinter窗口中创建三个文本区域,并使它们可动态调整大小。我认为一种解决方案是以像素为单位传递width和height参数(例如height = int(win_height / 2)),但据我所知这是不可能的,实际上是在tk中传递width和height参数。窗口小部件是根据每个行和列的字符来计算的。我还尝试过按百分比(例如height = 50%)传递width和height参数,但是它返回了语法错误。
我一直试图在网络上找到解决此问题的方法,而我发现的最佳代码是:
import tkinter as tk
root = tk.Tk()
root.geometry("500x500")
# Text Box
first_textbox = tk.Text(root, width=25, height=10, bg='yellow')
second_textbox = tk.Text(root, width=25, height=10, bg='blue')
third_textbox = tk.Text(root, width=50, height=20, bg='red')
# Packing
first_textbox.grid(column=1, row=1)
second_textbox.grid(column=1, row=2)
third_textbox.grid(column=2, row=1, rowspan=2)
root.mainloop()
通过运行此代码,我获得了一个窗口,该窗口具有三个无法动态调整大小的文本区域,并且比实际窗口宽度占用更多空间。我希望你能帮助我。 对不起,英语有误,这是我的第二种语言。
答案 0 :(得分:0)
grid
具有多个已记录的参数来帮助您完成所需的操作。您只需要使用它们即可。
默认情况下,grid
不会为小部件提供任何额外的空间-它们仅占用所需的空间,而不再占用更多空间。如果您要为小部件分配额外的空间,则必须明确地为此安排。
例如,如果您希望所有小部件均等地增长和缩小,则需要将行和列配置为等于weight
且大于零。当窗口大于所有小部件所要求的大小时,这将告诉网格如何分配额外的空间。
例如:
root.grid_rowconfigure((1,2), weight=1)
root.grid_columnconfigure((1,2), weight=1)
这只是告诉grid
如何处理多余空间。相反,如果您希望两个或更多行或列具有完全相同的大小,则可以使用uniform
选项告诉grid
您希望行或列具有统一的(相同)大小
例如,如果希望第1列和第2列都具有相同的宽度,则可以为uniform
选项的每列赋予相同的值。注意:传递给uniform
的值可以是您想要的任何值。重要的是它们被配置为具有相同的值。
root.grid_columnconfigure((1, 2), uniform="equal")
仅凭这一点并不能解决问题。您还必须告诉grid
,您希望小部件填充分配给它们的空间。您可以使用sticky
参数来执行此操作,该参数告诉网格将小部件“粘贴”到分配空间的一侧或多侧。
要使小部件填充所有分配的空间,您可以输入字符串"nsew"
,该字符串代表“北,南,东和西”,代表给定空间的四个侧面。
first_textbox = tk.Text(root, width=25, height=10, bg='yellow')
second_textbox = tk.Text(root, width=25, height=10, bg='blue')
third_textbox = tk.Text(root, width=50, height=20, bg='red')