ListBox с флажками в Python с Tkinter - PullRequest
0 голосов
/ 19 февраля 2019

вот код для определения полосы прокрутки в списке с помощью Tkinter:

import tkinter as tk

root = tk.Tk()

scrollbar = tk.Scrollbar(root)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

listbox = tk.Listbox(root)
listbox.pack()

for i in range(50):
  listbox.insert(tk.END, i)

listbox.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=s.set)

root.mainloop()

Я хочу адаптировать этот код, чтобы иметь полосу прокрутки с флажками, я знаю, что не могу заполнить список с помощью флажковпотому что список может содержать только текст

scrollbar = tk.Scrollbar(self)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
categories = ["aaa","bbb","ccc"]
for i in categories:
    var[i] = tk.IntVar()
    chk = tk.Checkbutton(self, text=i, variable=var[i], width=20)
    #chk.select()
    chk.pack()

scrollbar.config(command=s.set)

Как я могу сделать свои кнопки «прокручиваемыми»?

1 Ответ

0 голосов
/ 19 февраля 2019

Наиболее распространенный вариант - поместить кнопки-флажки в рамку, а затем поместить рамку на холст, поскольку холст можно прокручивать.Есть несколько примеров, в том числе и этот вопрос: Добавление полосы прокрутки к группе виджетов в Tkinter

В случае, когда вы имеете дело с вертикальным стеком виджетов, один sipleРешение состоит в том, чтобы встроить флажки в текстовый виджет, поскольку текстовый виджет поддерживает как встроенные виджеты, так и вертикальную прокрутку.

Пример:

import tkinter as tk

root = tk.Tk()

scrollbar = tk.Scrollbar(root)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

checklist = tk.Text(root, width=20)
checklist.pack()

vars = []
for i in range(50):
    var = tk.IntVar()
    vars.append(var)
    checkbutton = tk.Checkbutton(checklist, text=i, variable=var)
    checklist.window_create("end", window=checkbutton)
    checklist.insert("end", "\n")

checklist.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=checklist.yview)

# disable the widget so users can't insert text into it
checklist.configure(state="disabled")

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