Я хочу иметь два поля со списком с множественным выбором, возвращающие/показывающие значения списка. Мой код выглядит так:
data = [[],[]]
nom = [[],[]]
data[0] = [['01_Flat', '02_Curv', '03_RX', '04_RY', '05_RZ', '06_Fsyr', '07_AI']]
data[1] = [['Manual', 'Laser', 'Gamma', 'Proto']]
nom[0] = ['Part']
nom[1] = ['Cutting']
import tkinter as tk
from tkinter import ttk
class Combo(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
menubutton = tk.Menubutton(self, text=nom[k],
indicatoron=True, borderwidth=1, relief="raised")
menu = tk.Menu(menubutton, tearoff=False)
menubutton.configure(menu=menu)
menubutton.pack(padx=10, pady=10)
self.choices = {}
for choice in (data[k]):
self.choices[choice] = tk.IntVar(value=0)
# print(self.choices[choice].get())
#print(self.choices.get())
menu.add_checkbutton(label=choice, variable=self.choices[choice],
onvalue=1, offvalue=0,command=self.show)
def show(self):
# global selec
value = []
for choice in (data[k]):
value.append(self.choices[choice].get())
print(value)
# selec = value
return value
root = tk.Tk()
canva = tk.Canvas(root, width = 530,height = 500)
canva.pack(fill = "both", expand = True)
i=0
k = 0
a = Combo(root)
a = canva.create_window(125,50,anchor = "nw",window = a)
i = 0
k = 1
pos = Combo(root)
pos = canva.create_window(225,50,anchor = "nw",window = pos)
root.mainloop()
Огромная часть этого кода взята из этой темы: Как включить множественный выбор значений из поля со списком?
На данный момент это работает для второй список, но в первом есть ошибка:
Traceback (most recent call last):
File "C:\", line 1892, in __call__
return self.func(*args)
File "c:dbcreation.py", line 285, in show
value.append(self.choices[choice].get())
KeyError: 'Manual'
Подробнее здесь: https://stackoverflow.com/questions/786 ... ing-values
Поле со списком с множественным выбором, возвращающим строковые значения ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение