【问题标题】:Tkinter / Python grid layout, button rowspan issueTkinter / Python网格布局,按钮行跨度问题
【发布时间】:2015-09-22 11:13:05
【问题描述】:

我正在尝试使用网格布局制作这个简单的 gui,其中我在一行中有一个标签、一个条目和一个按钮,但由于某种原因,第一个按钮总是采用等于前一列中的行数的行数,即使我试图强迫它具有rowspan 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

【问题讨论】:

    标签: python python-3.x tkinter


    【解决方案1】:

    您没有为按钮指定父级,因此它们的父级是根窗口。另一方面,标签和条目的父属性设置为框架。发生的情况是在根,框架在零行,第一个按钮在零行,行的高度由框架的高度决定。

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

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

    【讨论】:

      猜你喜欢
      • 2013-03-24
      • 2016-05-05
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 2011-04-28
      • 1970-01-01
      相关资源
      最近更新 更多