我正在尝试根据另一个组合框的选择来填充组合框。如果我使用更新按钮来更新组合框#1 选择,我就可以做到这一点。但是,我想动态进行更新。
我附上了一个简单的代码示例,除了一个问题之外,该代码似乎按预期工作。您必须选择组合框 #1 两次才能更新组合框 #2。如果有人对两个如何解决这个问题有任何想法,我们将不胜感激。因为我是通过示例学习的,所以请您提供一个代码示例。
预先感谢您:begez
from tkinter import *
import tkinter.ttk,csv
global CategoryCombo
def getUpdateData():
cat = CategoryCombo.get()
if cat == 'car':
AccountCombo = tkinter.ttk.Combobox( width = 15,value = car)
AccountCombo.grid(row = 5,column = 1,pady = 25,sticky = E)
elif cat == 'home':
AccountCombo = tkinter.ttk.Combobox( width = 15,value = home)
AccountCombo.grid(row = 5,column = 1,pady = 25,sticky = E)
elif cat == 'rv':
AccountCombo = tkinter.ttk.Combobox( width = 15,value = rv)
AccountCombo.grid(row = 5,column = 1,pady = 25,sticky = E)
category = ['home','car','rv']
home = ['utilities','rent','cable']
car = ['gas','oil','repairs']
rv = ['parks','maintenance','payment']
v = StringVar
root = tkinter.Tk()
class Application(Frame):
def __init__(self, master=None, Frame=None):
Frame.__init__(self, master)
super(Application,self).__init__()
self.grid(column = 5,row = 20,padx = 50,pady = 50)
self.createWidgets()
def createWidgets(self):
global CategoryCombo
CatCBLabel = Label(text = 'Combo Box #1:').grid(row = 2,column = 1,padx = 10)
ActCBLabel = Label(text = 'Combo Box #2:').grid(row = 4,column = 1,padx = 10)
AccountCombo = tkinter.ttk.Combobox( width = 15)
AccountCombo.grid(row = 5,column = 1,pady = 25,padx = 10)
CategoryCombo = tkinter.ttk.Combobox(width = 15,values = category,textvariable = v,postcommand = getUpdateData)
CategoryCombo.grid(row = 3,column = 1,padx = 10,pady = 25)
print(v)
app = Application()
app.master.title('Yearly Budget Setup')
app.mainloop()
Run Code Online (Sandbox Code Playgroud)
结果:
from tkinter import *
import tkinter.ttk
category = {'home': ['utilities','rent','cable'],
'car': ['gas','oil','repairs'],
'rv':['parks','maintenance','payment']}
class Application(Frame):
def __init__(self, master=None, Frame=None):
Frame.__init__(self, master)
super(Application,self).__init__()
self.grid(column = 5,row = 20,padx = 50,pady = 50)
self.createWidgets()
def getUpdateData(self, event):
self.AccountCombo['values'] = category[self.CategoryCombo.get()]
def createWidgets(self):
Label(text = 'Combo Box #1:').grid(row = 2,column = 1,padx = 10)
Label(text = 'Combo Box #2:').grid(row = 4,column = 1,padx = 10)
self.AccountCombo = tkinter.ttk.Combobox( width = 15)
self.AccountCombo.grid(row = 5,column = 1,pady = 25,padx = 10)
self.CategoryCombo = tkinter.ttk.Combobox(width = 15, values = list(category.keys()))
self.CategoryCombo.bind('<<ComboboxSelected>>', self.getUpdateData)
self.CategoryCombo.grid(row = 3,column = 1,padx = 10,pady = 25)
app = Application()
app.master.title('Yearly Budget Setup')
app.mainloop()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8093 次 |
| 最近记录: |