Python 3.x tkinter combobox syncing ['variables']



我正在尝试拥有多个(在本例中为两个)ttk。具有唯一变量的组合框。这些框正在同步我的选择,而不是允许我选择单个变量。

我正在使用主文件和导入来存储变量:

list.py(变量)

class object():
    def __init__(self, name):
        self.name = name
        self.list = ['a','b','c']

main.py(程序):

from tkinter import *
from tkinter import ttk
import list
root = Tk()
aList = list.object('aName')
bList = list.object('bName')
aVariable = aList.list
aCombobox = ttk.Combobox(root, textvariable=aVariable)
aCombobox['values'] = aList.list
aCombobox.grid()
bVariable = bList.list
bCombobox = ttk.Combobox(root, textvariable=bList.list)
bCombobox['values'] = bList.list
bCombobox.grid()
root.mainloop()
导入变量(

作为模块/类)并初始化每个变量(aList 和 bList),我认为会创建两个单独的对象。每个组合框都有自己的文本变量,并从创建的对象生成其 ['valuse']。但是,这不起作用 - 它们会继续同步。

我能够让它在交互式会话和 CLI 应用程序中工作:

list.py(与上述导入相同)

main.py(作为控制台 - 无 tkinter)

import list
a = list.object('list')
b = list.object('list')
print(a.list, b.list)
b.list.pop()
print(a.list, b.list)
input()

我也尝试过copy.copy()和copy.deepcopy(),但都不起作用!

不能使用普通变量作为 textvariable 属性的值。您需要使用 tkinter 变量 - 通常是 StringVar 的实例。有关详细信息,请参阅 http://effbot.org/tkinterbook/variable.htm

相关内容

  • 没有找到相关文章

最新更新