Tkinter 按钮放置垂直拉伸
Tkinter Button Placement to stretch vertically
我有一个带有四个对象和一个按钮的 tkinter 弹出窗口。
我需要它们以这种方式放置(使用 excel 显示):
我是这样放置标签的:
lb1.grid(row=1,column=1)
lb3.grid(row=2,column=1)
lb3.grid(row=3,column=1,sticky='w')
lb4.grid(row=3,column=1,sticky='e')
但是,当我使用以下按钮放置按钮时,它并没有延伸到所有行。相反,它保持为第 4 行项目。
bt.grid(rowspan=3,column=2) #have even tried adding sticky = 'ns' to this but doesn't stretch
基本上,我希望按钮是小部件右边框上的一条垂直细线。我还想去掉按钮的斜角,文本将是空白的,颜色将与标签背景相同,这样按钮就很难看清了。但它应该可以在所有标签的小部件的整个东侧边界上单击。
我们能做到吗?
您的问题是您将 lb4 标签放在了 lb3 标签上。您还应该为 lb1 和 lb2 指定 columnspan = 2,因为它们跨越 2 列(第 1 列,lb3 所在的位置,第 2 列,lb4 所在的位置)。 bt 将位于第 3 列,从第 1 行开始,行跨度 = 3,因此到达第 3 行;代码:
from tkinter import *
root = Tk()
root.geometry("400x400")
lb1 = Label(root, text="Obj1")
lb2 = Label(root, text="Obj2")
lb3 = Label(root, text="Obj3")
lb4 = Label(root, text="Obj4")
lb1.grid(row=1,column=1, columnspan=2)
lb2.grid(row=2,column=1, columnspan=2)
lb3.grid(row=3,column=1,sticky='w')
lb4.grid(row=3,column=2,sticky='e')
bt = Button(root, text="Button")
bt.grid(rowspan=3, row=1, column=3, sticky="ns")
root.mainloop()
还请注意,行和列实际上从 0 开始(就像 python 中的大多数内容一样),但是因为我不确定您是否已经在行 = 0 / 列 = 0 中有一些小部件,我使用了您的列号/行号。
我有一个带有四个对象和一个按钮的 tkinter 弹出窗口。
我需要它们以这种方式放置(使用 excel 显示):
我是这样放置标签的:
lb1.grid(row=1,column=1)
lb3.grid(row=2,column=1)
lb3.grid(row=3,column=1,sticky='w')
lb4.grid(row=3,column=1,sticky='e')
但是,当我使用以下按钮放置按钮时,它并没有延伸到所有行。相反,它保持为第 4 行项目。
bt.grid(rowspan=3,column=2) #have even tried adding sticky = 'ns' to this but doesn't stretch
基本上,我希望按钮是小部件右边框上的一条垂直细线。我还想去掉按钮的斜角,文本将是空白的,颜色将与标签背景相同,这样按钮就很难看清了。但它应该可以在所有标签的小部件的整个东侧边界上单击。
我们能做到吗?
您的问题是您将 lb4 标签放在了 lb3 标签上。您还应该为 lb1 和 lb2 指定 columnspan = 2,因为它们跨越 2 列(第 1 列,lb3 所在的位置,第 2 列,lb4 所在的位置)。 bt 将位于第 3 列,从第 1 行开始,行跨度 = 3,因此到达第 3 行;代码:
from tkinter import *
root = Tk()
root.geometry("400x400")
lb1 = Label(root, text="Obj1")
lb2 = Label(root, text="Obj2")
lb3 = Label(root, text="Obj3")
lb4 = Label(root, text="Obj4")
lb1.grid(row=1,column=1, columnspan=2)
lb2.grid(row=2,column=1, columnspan=2)
lb3.grid(row=3,column=1,sticky='w')
lb4.grid(row=3,column=2,sticky='e')
bt = Button(root, text="Button")
bt.grid(rowspan=3, row=1, column=3, sticky="ns")
root.mainloop()
还请注意,行和列实际上从 0 开始(就像 python 中的大多数内容一样),但是因为我不确定您是否已经在行 = 0 / 列 = 0 中有一些小部件,我使用了您的列号/行号。