【发布时间】:2020-08-26 21:36:50
【问题描述】:
我正在尝试为我正在制作的应用程序创建一个 GUI,但由于某种我无法弄清楚的原因,message_space 框架内的文本小部件正在增加 message_space 框架的大小并减少friends_space 框架的大小。我希望friends_space 框架占据窗口大小的 1/4,而 message_space 框架占据窗口大小的剩余 3/4ts。
红色是
friends_space框架,蓝色是message_space框架。
这就是我想要的框架大小。
这就是我添加文本框时发生的情况。
代码
from tkinter import *
class app:
def __init__(self, master):
self.master = master
master.title("PyChat")
master.geometry("800x500")
master.configure(bg="grey")
master.resizable(0, 0)
master.grid_columnconfigure(0, weight=1)
master.grid_columnconfigure(1, weight=3)
master.grid_rowconfigure(0, weight=1)
self.friends_space = Frame(master, bg="red")
self.friends_space.grid(row=0, column=0, sticky=NSEW)
self.chat_space = Frame(master, bg="blue")
self.chat_space.grid(row=0, column=1, columnspan=3, sticky=NSEW)
self.message_area = Text(self.chat_space)
self.message_area.grid(row=0, column=0)
root = Tk()
my_gui = app(root)
root.mainloop()
【问题讨论】:
-
weight=选项通常控制 额外空间 的分布,超出了在行/列中保存小部件所需的最小值 - 请注意,右侧的蓝色区域文本的宽度正好是红色区域的 3 倍。您需要添加一个uniform=选项,两列的值相同(确切的值无关紧要) - 当它生效时,宽度与权重严格成比例。 -
@jasonharper 我对在哪里添加
uniform=选项有点困惑。我是 tkinter 的新手。 -
它将进入
.grid_columnconfigure()调用(或.grid_rowconfigure(),但你不需要它)。
标签: python-3.x tkinter