可以创建不同数量的框架/选项卡对象并将每个对象绑定到一个名称吗?

时间:2019-04-05 21:56:00

标签: python tkinter ttk

我正在阅读一个游戏的文件夹结构,其中每个帐户都有服务器的子文件夹,然后是角色的子文件夹,并且在角色文件夹中有一个文本文件。

我要在我的根窗口中使用tkinter和ttk创建的对象是每个帐户1个标签/帧,每个帐户下每个服务器1个标签,然后每个字符1个标签,最后我将从每个字符文件放文本

由于我是从文件系统中读取此信息的,因此帐户,服务器和字符的数量可能会有所不同,因此我将遍历这些内容以创建tkinter小部件对象。

问题是我无法弄清楚如何将每个对象绑定到名称,因此我可以在创建对象后进行比较/修改对象的值,以便每个服务器只有一个选项卡,例如所有字符都位于放。

我尝试了谷歌搜索,但似乎找不到我想要的东西。到目前为止,我已经尝试为将要读取的每个文件创建一个类,并且该类包含所有必要的信息。但是在创建tkinter对象并试图弄清楚该怎么做时,我陷入了困境。

这是我的班,从中我可以成功创建一个实例,并为每个文件填充所有信息,尽管它们位于没有绑定名称/变量的对象列表中:

class MacroObject(object):
    def __init__(self, name, realm, account, path):
        self.account = account
        self.realm = realm
        self.name = name
        self.path = path
        self.macroName = ''
        self.macroText = []

这是我当前创建gui的方法:

root = tk.Tk()

tabControl = ttk.Notebook(root)
tabControl.pack()

account_tabs = []
realm_tabs = []
character_tabs = []

accounts = []
realms = []

for objects in macro_objects:
    if objects.account not in accounts:
        tabControl.add(ttk.Frame(tabControl), text=objects.account)
        accounts.append(objects.account)
        for objects in macro_objects:
            if objects.account == ttk.Frame.text and objects.realm not 

这是我被卡住的地方,最后一行显然不起作用,实例化ttk.Frame似乎没有办法让我引用它,而且我似乎无法弄清楚如何解决它。 / p>

我仍然还是一个初学者,所以我猜这可能是一个愚蠢的问题,并且可能有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

我的问题得到了解决,这要归功于Martineau的提醒/使我意识到我可以将小部件存储在字典中。

我将MacroObject类实例中的值用作键,过了一会儿,我得到了ttk笔记本选项卡层次结构所需的结果: https://i.imgur.com/IsNmXiO.png