将在组合框中选择的选项设置为随组合框中选择的选项而变化的变量

时间:2017-03-29 09:05:24

标签: python tkinter combobox

我正在尝试将组合框下拉列表中选择的选项设置为变量,但是,我用来表示变量的标签目前只是读取。!combobox。例如,如果我从下拉列表中选择“客户2”,则标签将更改为客户2.我可能需要使用按钮来执行此操作,但我不确定如何使其工作。

import tkinter as tk
from tkinter import ttk
root = tk.Tk()

ICus = tk.StringVar(root)

ICus.set("Select Customer")

ICustomer = ttk.Combobox( textvariable = ICus, state = 'readonly')
ICustomer['values'] = ("Customer1", "Customer2", "Customer3")
ICustomer.grid(row = 2, column = 2)


label_ICustVar = tk.Label( text= ICustomer)
label_ICustVar.grid(row = 3, column = 3)

简单地说,我希望将下拉列表中选择的选项设置为我稍后可以在我的代码中使用的变量。我对编码很陌生,所以我可能会遗漏一些非常明显的东西,任何帮助都会受到赞赏:)

2 个答案:

答案 0 :(得分:2)

我认为,对于您的使用,a_guest提供的链接效果最好,但就您的示例而言,我认为最好使用标签的关键字textvariable,即

# note that this is the StringVar ICUS, not the combobox ICUSTOMER.
label_ICustVar = tk.Label( textvariable= ICus) 
label_ICustVar.grid(row = 3, column = 3)

答案 1 :(得分:0)

您可以使用get()方法使用<<ComboboxSelected>>事件。

def update_label(event):
    label_ICustVar.configure(text=ICustomer.get())


ICustomer.bind("<<ComboboxSelected>>", update_label)
每次从组合框下拉列表中选择项目时,都会触发

update_label方法。

此方法无需使用StringVar(),因此您可以删除ICus