首页 > 解决方案 > 我正在尝试从组合框中获取当前选定的项目(键)

问题描述

我想我终于知道如何向所有人展示我正在尝试做的事情。这是放置 ttk.Combobox 和 ttk.Button 的代码。组合框由字典“my_act_dict”填充用户从 cb 中选择一个项目后,我想点击按钮并从组合框中获取密钥。

from tkinter import Tk
from tkinter import ttk

my_act_dict = {'Serve': 1, 'Stock': 2, 'Board': 3}

class Screen:
    def __init__(self, master):
        self.master = master
        master.title("A simple GUI")
        master.geometry("200x200")

        self.save_button = ttk.Button(master, text="What is cb key?", command=self.save)
        self.save_button.pack()

        self.cb_act = ttk.Combobox(master, values=[*my_act_dict])
        self.cb_act.pack()

    def save(self):
        # cb_key = ??? 
        print("cb key = ?")

用户按下按钮时如何获取组合框键?

root = Tk()
my_gui = Screen(root)
root.mainloop()

对不起,我不是很清楚。我刚刚开始学习 python,并且在课程方面遇到了真正的问题。谢谢你的帮助。

约翰

标签: pythontkinter

解决方案


我最终做的是创建一个类属性 my_key 并从组合框和按钮访问它。

my_dict = {'Serve': 1, 'Stock': 2, 'Board': 3}


class Screen:
    my_key = "None"

    def __init__(self, master):
        self.master = master
        master.geometry("300x300")

    def bu_callback():
        a = self.my_key
        print("button click global: ", a)
    self.my_button = ttk.Button(master, text="Test CB RETURN",command=bu_callback)
    self.my_button.pack()

    var_per = tk.StringVar()
    cb = ttk.Combobox(master, values=[*my_dict],textvariable = var_per)
    cb.pack()

    def cb_callback(event):
        key_p = var_per.get()
        vol_id = my_dict[key_p]
        self.my_key = vol_id
        print("from cb_callback:",self.my_key)
    cb.bind('<<ComboboxSelected>>', cb_callback)

推荐阅读