【发布时间】:2016-11-03 02:26:45
【问题描述】:
在 tkinter 窗口中绘制一个 4x4 网格。我想扩展第 2 行第 2 列的单元格,但不是第 2 行或第 2 列的所有其他内容。我在第 1-15 行的左侧设计一个带有可选选项的文本窗口。使第 2 行的权重为 1 和第 2 列的权重为 1 允许我的 Text 小部件扩展,但第 2 行和第 2 列中的其他所有内容也是如此。有什么办法吗?
from tkinter import *
root = Tk()
lbl1 = Label(root, text="label1")
lbl1.grid(row=0, column=1)
lbl2 = Label(root, text="label2")
lbl2.grid(row=1, column=0)
lbl3 = Label(root, text="label3")
lbl3.grid(row=3, column=0)
lbl4 = Label(root, text="label4")
lbl4.grid(row=5, column=0)
txt = Text(root, state='disabled', bg='#E8E8E8')
txt.grid(row=1, column=1, padx=10, pady=10, sticky="NSEW", columnspan=2, rowspan=2)
root.rowconfigure(2, weight=1)
root.columnconfigure(2, weight=1)
root.mainloop()
示例 2:
from tkinter import *
root = Tk()
frame1 = Frame(root)
frame1.grid(row=0, column=1)
frame2 = Frame(root)
frame2.grid(row=1, column=0)
frame3 = Frame(root)
frame3.grid(row=1, column=1, rowspan=2, columnspan=2)
lbl1 = Label(frame1, text="label1")
lbl2 = Label(frame2, text="label2")
lbl3 = Label(frame2, text="label3")
lbl4 = Label(frame2, text="label4")
lbl1.grid(row=0, column=1, sticky=N)
lbl2.grid(row=3, column=0, sticky=N)
lbl3.grid(row=5, column=0, sticky=N)
lbl4.grid(row=7, column=0, sticky=N)
txt = Text(frame3, state='disabled', bg='#E8E8E8')
txt.grid(row=0, column=0, padx=10, pady=10, sticky="NSEW", columnspan=2, rowspan=2)
root.rowconfigure(2, weight=1)
root.columnconfigure(2, weight=1)
frame3.rowconfigure(0, weight=1)
frame3.columnconfigure(0, weight=1)
root.mainloop()
示例 2 的所有内容都在我想要的位置,但 Text 小部件没有展开。使用网格时是否可以设置扩展框架?
【问题讨论】:
-
我认为如果没有具体的例子,这将很难回答。有有个答案,但正确的答案取决于很多变量。例如,假设你希望它向右展开,你期望在同一行的右边的小部件会发生什么?他们会转移吗?被覆盖?垂直扩展也是一样——下面行中的项目会发生什么?能扩大多少?第 2 行第 2 列中的项目可以加倍吗?三倍?它可以填满整个屏幕吗?它可以完全消失吗?你有能力改变用户界面吗?
-
上面添加的示例。当窗口最大化或用户拖动窗口的角时,我只希望文本小部件展开。我希望标签 2-4 在左上角彼此相邻并且不分开。我希望这会有所帮助。
标签: python python-3.x tkinter grid