Python 3.x tkinter组合框同步['变量']

时间:2013-09-16 16:30:05

标签: python python-3.x combobox tkinter sync

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

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

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)我将创建两个单独的对象。每个Combobox都有自己的 textvariable ,并从创建的对象生成['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(),但都不起作用!

1 个答案:

答案 0 :(得分:1)

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