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