2013-09-16 4 views
1

Я пытаюсь иметь несколько (два для этого примера) ttk.Comboboxes с уникальными переменными. Ящики синхронизируют мой выбор, а не позволяют мне выбирать отдельные переменные.Python 3.x tkinter comboboxes syncing ['variables']

Я использую основной файл и импорт для хранения переменной:

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). Я полагаю, что woul d создать два отдельных объекта. Каждый 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

Вы не можете использовать обычные переменные в качестве значения атрибута textvariable. Вам нужно будет использовать переменную tkinter - обычно экземпляр StringVar. Для получения дополнительной информации см. http://effbot.org/tkinterbook/variable.htm

Смежные вопросы