【发布时间】:2021-08-14 00:43:49
【问题描述】:
我正在尝试在一个窗口中定位自定义小部件的多个实例,目的是让用户将项目从一个小部件的 Listbox 移动到另一个小部件的位置。
我的小部件类:
import tkinter as tk
class DistriBox(tk.Frame):
def __init__(self, parent, name):
tk.Frame.__init__(self, parent)
self.parent = parent
self.label = tk.Label(self, text=name, anchor="center")
self.label.grid(column=0, row=0)
self.lb_locs = tk.Listbox(self, width=15, height=5)
self.lb_locs.grid(column=0, row=1)
def __iter__(self):
return self
def __getitem__(self, key):
return self.lb_locs.size()
def __setitem__(self, key, value):
print('entering __setitem__ with %4d and %s' % (key, value))
items_already = self.lb_locs.size()
self.lb_locs.insert(items_already, value)
和应用程序:
import tkinter as tk
import DistriBox as db
class App(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.parent = parent
group1 = []
for i in range(0,3):
group1.append(db.DistriBox(self, 'group 1'))
group1[i].grid(column=0, row=i)
group1[0] = 'California'
group1[1] = 'Utah'
if __name__ == "__main__":
root = tk.Tk()
root.geometry('650x600')
App(root).grid(column=0, row=0)
root.mainloop()
问题:
- 只绘制了 3 个小部件,而循环指定了 4 个。
- 我无法将项目插入特定小部件的
Listbox。
【问题讨论】:
-
您知道
range(0,3)返回 0、1 和 2 但不是 3吗?
标签: python class tkinter indexing