我正在开发一个非常粗糙的窗口,以扩大我对某些TKinter小部件的理解,如组合框和比例。
我目前正在开发的小部件是一个简单的列表框,其中包含要访问的页面列表。我一直在试图理解使用 Stringvar 填充列表框。
我的代码基于TKDocs的这个片段:
choices = ["apple", "orange", "banana"]
choicesvar = StringVar(value=choices)
这是我的代码:
other_frames = ['Cameras', 'Tasks', 'Maintainance', 'Clock', 'Assistance', 'Tools']
StringVar = " "
O_F_var = StringVar(value=other_frames)
我在这一步上得到了错误,而且只有这一步,所以我显然误解了如何使用 stringvar 和/或给予 stringvar 赋予什么值。
我在TKDocs网站上读到,就像 Entry 一样,Listbox 也使用 StringVar。为了尝试和理解,我访问了 Entry 小部件的解释。在代码片段中,StringVar 的值是 nonetype。
TKDocs代码片段:
username = StringVar()
name = ttk.Entry(parent, textvariable=username)
我试着为我的StringVar* 使用一个 *Nonetype值,我期望让列表框由列表值填充,因为我已经“使用StringVar作为中介”。
我反而收到错误:
类型错误:“str”对象不可调用
然后,我试图找出为什么事情没有排队,可悲的是无济于事。
一个解释和/或资源,以帮助我理解将不胜感激。
1条答案
按热度按时间rkkpypqq1#
StringVar
是tkinter中的类。你不能只使用StringVar = " "
就指望它能正常工作。您需要创建StringVar
类的示例。然而,在本例中,您希望为
Listbox
使用一个变量,而listbox适用于列表而不是字符串。如果你使用列表作为StringVar
的值,tkinter会将列表转换为字符串,并破坏它表示列表的事实。相反,当使用带有
Listbox
的变量时,可以使用Variable
类,它将保留数据的基本类型。示例: