Tkinter флажок разделить список - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь разделить список из файла с ~ 100 элементами на несколько строк флажков (по 10 на строку ~).Поскольку все элементы находятся на одной длинной строке.

Я попытался разбить первый файл на nFiles с максимум 10 элементами и создать новые строки кнопки проверки в кадре.Но нет, я получил только все элементы в одной строке:

class DisplayApp(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("My Menu")
        frame_1 = tk.LabelFrame(self, text="Frame 1")
        frame_1.grid(row=2, columnspan=3, sticky='WE', padx=5, pady=5, ipadx=5, ipady=5)
        path = '/home/lst/*.txt'
        files=glob.glob(path)
        for file in files:
            with open(file, 'r') as lst_file:
                for item in lst_file:
                    tk.Checkbutton(frame_1, text=item.rstrip()).pack(side=tk.LEFT)

if __name__ == "__main__":
    DisplayApp().mainloop()

Исходный текстовый файл:

item1 
item2
item3
...
item100

Большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 14 ноября 2018

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

import tkinter as tk
import glob

class DisplayApp(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("My Menu")
        frame_1 = tk.LabelFrame(self, text="Frame 1")
        frame_1.grid(row=0, sticky='ew', padx=5, pady=5, ipadx=5, ipady=5)
        path = '/path/to/your/txt/files'
        files=glob.glob(path)
        count = 0
        for file in files:
            with open(file, 'r') as lst_file:
                for item in lst_file:
                    tk.Checkbutton(frame_1, text=item.rstrip()).grid(row=count//10, column=count%10)
                    count += 1

if __name__ == "__main__":
    DisplayApp().mainloop()

У меня был файл с 30 элементами.Он будет работать с любым количеством файлов.Попробуйте.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...