我正在尝试使用唯一变量的多个(此示例为两个)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),我将创建两个单独的对象。每个组合框都有自己的text变量,并从创建的对象生成其['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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句