Tkinter/Python网格布局,按钮行span issu

2024-09-30 00:29:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用网格布局来制作这个简单的图形用户界面,我在一行中有一个标签、一个条目和一个按钮,但由于某些原因,第一个按钮总是将行跨度等于前一列中的行数,即使我试图强制它具有行跨度1,它也没有任何效果,这让我很困惑。在

import tkinter as tk
class MainApplication(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
        self.grid()
        #LABELS
        self.l1 = tk.Label(self, text = "Source")
        self.l1.grid(column = 0, row = 0, sticky = "E")

        self.l2 = tk.Label(self, text = "Text files destination")
        self.l2.grid(column = 0, row = 1, sticky = "E")

        self.l3 = tk.Label(self, text = "Image files destination")
        self.l3.grid(column = 0, row = 2, sticky = "E")
        #ENTRIES
        self.e1 = tk.Entry(self)
        self.e1.grid(column = 1, row = 0)

        self.e2 = tk.Entry(self)
        self.e2.grid(column = 1, row = 1)

        self.e3 = tk.Entry(self)
        self.e3.grid(column = 1, row = 2)
        #BUTTONS

        self.b3 = tk.Button(text = "Select dir", command = self.cb2)
        self.b3.grid(column = 2, row = 0)

        self.b4 = tk.Button(text = "Select dir", command = self.cb2)
        self.b4.grid(column = 2, row = 1)

        self.b5 = tk.Button(text = "Select dir", command = self.cb2)
        self.b5.grid(column = 2, row = 2)


if __name__ == "__main__":
    root = tk.Tk()
    app = MainApplication(root)
    root.mainloop()

输出: http://i.imgur.com/AdWkHwi.png


Tags: textselfdircolumnbuttonrootselectlabel
1条回答
网友
1楼 · 发布于 2024-09-30 00:29:04

您没有为按钮指定父级,因此它们的父级是根窗口。另一方面,标签和条目的父属性设置为帧。结果是在根中,帧在第0行,第一个按钮在第0行,行的高度由帧的高度决定。在

解决方案是使按钮的父级成为框架。在

    self.b3 = tk.Button(self, ...)
    self.b4 = tk.Button(self, ...)
    self.b5 = tk.Button(self, ...)

相关问题 更多 >

    热门问题