【问题标题】:Tkinter Button Placement to stretch verticallyTkinter 按钮放置以垂直拉伸
【发布时间】:2022-01-20 04:43:26
【问题描述】:

我有一个包含四个对象和一个按钮的 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

基本上,我希望按钮是小部件右边框上的一条细垂直线。我还想删除按钮的斜面,文本将是空白的,颜色将与标签背景相同,以使按钮难以看到。但它应该可以在所有标签的小部件的整个东侧边框上单击。

我们可以这样做吗?

【问题讨论】:

    标签: python-3.x tkinter button


    【解决方案1】:

    您的问题是您将 lb4 标签放在 lb3 标签上。您还应该为 lb1 和 lb2 指定 columnspan = 2,因为它们跨越 2 列(lb3 所在的第 1 列和 lb4 所在的第 2 列)。 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 中的大多数东西一样),但是因为我不确定你是否已经在 row = 0 / column = 0 中有一些小部件,所以我使用了你的列号 / 行数字。

    【讨论】:

    • 哦。知道了。我猜第一个 grd() 它会创建一个矩阵。所以我必须预先计划整个布局,而不是最后添加和跨越一个。 (就是这里的情况。在第一个版本中只有4个标签。现在我要添加一个按钮)。谢谢。
    • 另外,特别是跨越 lb1 和 lb2,我不再需要 lb3 和 lb4 的粘性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2018-02-25
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多