2015-09-22 1 views
0

Я пытаюсь сделать этот простой gui, используя сетку, где у меня есть в одной строке ярлык, запись и кнопка, но по какой-то причине первая кнопка всегда принимает ряды равными равными к числу строк в предыдущем столбце, даже если я пытаюсь заставить его иметь rowspan 1, он не имеет никакого эффекта, что меня сильно смущает.Tcinter/Python grid layout, button rowspan issue

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

ответ

0

Вы не указали родителя для кнопок, так что их родитель является корневое окно. С другой стороны, метки и записи имеют свой родительский атрибут, установленный в кадр. Случается, что в корне, кадр находится в строке 0, а первая кнопка находится в строке 0, а высота строки определяется высотой кадра.

Решение состоит в том, чтобы сделать родительский элемент кнопок рамкой.

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