You need to enable JavaScript to run this app. tkinter中StringVar.get()返回空 无法获取Combobox下拉选中值
优惠活动
大模型
产品
解决方案
定价
更多

tkinter中StringVar.get()返回空 无法获取Combobox下拉选中值

问题原因排查
  • print(self.var.get()) 写在构造方法__init__中,该方法仅在页面框架初始化阶段执行一次,此时用户尚未在UI中操作下拉框选择任何值,StringVar默认初始值为空字符串,因此输出为空。
  • 未给Combobox绑定选中事件回调,你当前只配置了postcommand参数,这个参数的作用是下拉框展开前执行的回调,仅用来动态更新下拉选项列表,不会响应用户选中值的操作,因此选中值变化后不会主动触发你要的打印逻辑。
修复方案

你需要给Combobox绑定<<ComboboxSelected>>虚拟事件,在对应的回调方法中执行取值打印逻辑,修改后的代码示例如下:

import tkinter as tk
from tkinter import ttk
from tkinter import StringVar

class Frame(tk.Frame):
   def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        self.var = StringVar()

        self.combobox = ttk.Combobox(
            self,
            textvariable=self.var,
            postcommand=self.update_list_combobox,
            state="readonly",
        )
        self.combobox.pack()
        # 绑定选中事件
        self.combobox.bind("<<ComboboxSelected>>", self.on_combobox_select)

    def update_list_combobox(self):
        _list = self.controller.data.columns.tolist()
        self.combobox["values"] = _list
    
    # 新增选中事件回调方法
    def on_combobox_select(self, event):
        # 两种取值方式都可正常获取选中值
        print("StringVar取值:", self.var.get())
        print("Combobox直接取值:", self.combobox.get())

内容的提问来源于stack exchange,提问作者WitchKingofAngmar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 01:36:04