why does my tk tabbed for loop have an error of "tabs[upper_tabs] = self.tab TypeError: unhashable type: 'list'"
why does my tk tabbed for loop have an error of "tabs[upper_tabs] = self.tab TypeError: unhashable type: 'list'"
我可以单独创建 2 个选项卡,并且我试图通过使用 for 循环使其可扩展。我收到一条错误消息
tabs[upper_tabs] = self.tab
TypeError: unhashable type: 'list'
我假设这是我引用字典的方式。你能帮我理解并纠正错误吗?
import tkinter as tk
from tkinter import ttk
upper_tabs = ["Final", "Requests"]
tabs = {}
class Application(ttk.Frame): #inherent from frame.
def __init__(self, parent):
tk.Frame.__init__(self, parent, bg="ivory2")
self.parent = parent
self.pack()
self.tabControl = ttk.Notebook(self, width="900", height= "350") #
Create Tab Control
for names in upper_tabs:
self.tab=ttk.Frame(self.tabControl)# Create a tab
self.tabControl.add(self.tab, text=names) # Add the tab
tabs[names] = self.tab
self.tabControl.pack(expand=1, fill="both") # Pack to make visible
self.grid()
def main():
root = tk.Tk()
root.title("class basic window")
root.geometry("1200x600")
root.config(background="LightBlue4")
app = Application(root)
root.mainloop()
if __name__ == '__main__':
main()
我不太明白你想做什么,但是要消除错误并使程序看起来像这样...
(缩小比例)
... 是将行 tabs[upper_tabs] = self.tab
更改为 tabs[tuple(upper_tabs)] = self.tab
。
之所以可行,是因为 tuple
无法更改 ,因此可以将其用作字典键,而 list
可以是。有关 python 词典的更多信息,请参阅 this page。
我可以单独创建 2 个选项卡,并且我试图通过使用 for 循环使其可扩展。我收到一条错误消息
tabs[upper_tabs] = self.tab
TypeError: unhashable type: 'list'
我假设这是我引用字典的方式。你能帮我理解并纠正错误吗?
import tkinter as tk
from tkinter import ttk
upper_tabs = ["Final", "Requests"]
tabs = {}
class Application(ttk.Frame): #inherent from frame.
def __init__(self, parent):
tk.Frame.__init__(self, parent, bg="ivory2")
self.parent = parent
self.pack()
self.tabControl = ttk.Notebook(self, width="900", height= "350") #
Create Tab Control
for names in upper_tabs:
self.tab=ttk.Frame(self.tabControl)# Create a tab
self.tabControl.add(self.tab, text=names) # Add the tab
tabs[names] = self.tab
self.tabControl.pack(expand=1, fill="both") # Pack to make visible
self.grid()
def main():
root = tk.Tk()
root.title("class basic window")
root.geometry("1200x600")
root.config(background="LightBlue4")
app = Application(root)
root.mainloop()
if __name__ == '__main__':
main()
我不太明白你想做什么,但是要消除错误并使程序看起来像这样...
tabs[upper_tabs] = self.tab
更改为 tabs[tuple(upper_tabs)] = self.tab
。
之所以可行,是因为 tuple
无法更改 ,因此可以将其用作字典键,而 list
可以是。有关 python 词典的更多信息,请参阅 this page。