如何解决tkinter文本小部件增加框架的大小
我正在尝试为正在制作的应用程序创建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()
解决方法
如果您使用的是grid
,则将UI分成四个等宽的列(使用uniform
选项),然后使文本小部件跨越三个。
您还应该从一个可以扩展到该空间的小文本小部件开始。否则,tkinter将尝试保留较大的尺寸,并开始从其他小部件中删除空间,以尝试使所有部件都合适。
这是一个基于原始代码的示例。但是,我将pack
用于文本窗口小部件,而不是grid
,因为它需要较少的代码行。我还对代码进行了一些重组。我发现将对grid
的调用分组在一起可以简化布局。
我还删除了调整大小的限制。限制用户调整窗口大小的能力很少有一个好主意。另外,它使您可以看到生成的UI是响应式的。
from tkinter import *
class app:
def __init__(self,master):
self.master = master
master.title("PyChat")
master.geometry("800x500")
master.configure(bg="grey")
master.grid_columnconfigure((0,1,2,3),uniform="uniform",weight=1)
master.grid_rowconfigure(0,weight=1)
self.friends_space = Frame(master,bg="red")
self.chat_space = Frame(master,bg="blue")
self.friends_space.grid(row=0,column=0,sticky=NSEW)
self.chat_space.grid(row=0,column=1,columnspan=3,sticky=NSEW)
self.message_area = Text(self.chat_space,width=1,height=1)
self.message_area.pack(fill="both",expand=True)
root = Tk()
my_gui = app(root)
root.mainloop()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。