我正在尝试使用tkinter制作一个带有以下示例的组合框
import tkinter as tk
from tkinter import ttk
tkwindow = tk.Tk()
cbox = ttk.Combobox(tkwindow, values=['2.4', '5'], state='readonly')
cbox.grid(column=0, row=0)
tkwindow.mainloop()
我想从组合框中选择一个选项时,我想选择'2.4'。然后我可以将'2.4'存储在变量中,稍后在我的代码中使用。 我试着在这里搜索,但所有情况都只是打印一个值。我不想打印,我想存储一个值。
有关于此的任何想法吗?
谢谢。
答案 0 :(得分:1)
要执行您要完成的任务,我们可以使用bind()
方法和get()
方法。
我在注释部分的代码中注意到(现在看起来已被删除)您尝试执行c = cbox.get()
但是此值未更新,因为它仅在程序初始化时被调用一次。相反,我们可以直接在cbox.get()
语句中使用if
,然后将该值分配给全局变量c
。
我们需要一个在组合框中选择项目期间触发Selected事件时可以调用的函数。我们可以使用bind()
方法指定在使用c
方法触发此事件时要调用的函数。
我已将你粘贴在评论中的代码重新格式化为功能性的代码。
更新
我添加了一个按钮来打印当前存储的import tkinter as tk
from tkinter import ttk
tkwindow = tk.Tk()
c = ""
# This function will check the current value of cbox and then set
# that value to the global variable c.
def check_cbox(event):
global c
if cbox.get() == '2.4':
c = cbox.get() # this will assign the variable c the value of cbox
if cbox.get() == '5':
c = cbox.get()
def print_c_current_value():
print(c)
cbox = ttk.Combobox(tkwindow, values=['2.4', '5'], state='readonly')
cbox.grid(column=0, row=0)
# This bind calls the check_box() function when an item is selected.
cbox.bind("<<ComboboxSelected>>", check_cbox)
tk.Button(tkwindow, text="Print C", command=print_c_current_value).grid(column=0, row=1)
tkwindow.mainloop()
值,以便您可以在每次从“组合框”中选择后检查该值。
见下面的代码。
emulator