2016-05-18 2 views
1

Я немного запутался с сеткой в ​​tkinter Python. Может ли кто-нибудь показать, как сделать это правильно? Позиции элементов ListBox и Label не находятся в тех местах, где я показывал их.tkinter ListBox и позиция метки

КОД:

 self.third_label = Label(self, text="TEXT") 
     self.third_label.grid(row=2, column=0, columnspan=4, padx=10, pady=10, sticky=W) 
     self.fourth_label = Label(self, text="LONG TEXT") 
     self.fourth_label.grid(row=2, column=1, columnspan=4, padx=10, pady=10, sticky=W) 
     self.fifth_label = Label(self, text="SOME TEXT") 
     self.fifth_label.grid(row=2, column=2, columnspan=6, padx=10, pady=10, sticky=W) 
     self.sixth_label = Label(self, text="BIG TEXT") 
     self.sixth_label.grid(row=2, column=3, columnspan=4, padx=10, pady=10, sticky=W) 
     self.first_listbox = Listbox(self, width=40, selectmode=EXTENDED) 
     self.first_listbox.grid(row=3, column=0, columnspan=4, padx=10, pady=10, sticky=W) 
     self.second_listbox = Listbox(self, width=40, selectmode=EXTENDED) 
     self.second_listbox.grid(row=3, column=2, columnspan=4, padx=10, pady=10, sticky=W) 
     self.third_listbox = Listbox(self, width=40, selectmode=EXTENDED) 
     self.third_listbox.grid(row=3, column=4, columnspan=4, padx=10, pady=10, sticky=W) 
     self.fourth_listbox = Listbox(self, width=40, selectmode=EXTENDED) 
     self.fourth_listbox.grid(row=3, column=6, columnspan=4, padx=10, pady=10, sticky=W) 

То, что я прямо сейчас: enter image description here

Просто Пример: enter image description here

ответ

3

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

Небольшой пример:

import string 
import tkinter as tk 

root = tk.Tk() 

for i in range(3): 
    tk.Label(root, text=string.ascii_letters).grid(row=0, column=i) 
    tk.Listbox(root, width=40).grid(row=1, column=i) 

root.mainloop() 

Edit от комментариев (для размера ListBox):

Чтобы получить количество строк в ListBox вы можете использовать метод .size().

Изображение:

enter image description here

+0

Спасибо! Я понимаю свою ошибку! Кстати, я могу задать еще один вопрос? Как в Python я могу узнать Count ListBox. Допустим, у меня есть код 'if (listBox1.Items.Count == 0)' в C#. То же самое с этим: 'if self.first_listbox is None:' –

Смежные вопросы