You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter Combobox列表含空格时显示{}异常问题求助

Tkinter Combobox 显示{}异常的解决办法

你遇到的问题是因为给Combobox的values参数传入了元组列表,Combobox会直接将每个元组转为字符串格式显示,所以会出现带括号、引号的异常样式(比如(7, 'Analize space me'))。

解决方法

根据需求选择以下方案:

1. 仅显示用户名

提取元组中的用户名作为选项值:

import tkinter as tk
from tkinter import ttk

all_users = [(7, 'Analize space me'), (8, 'Analize space me2'), 
    (9, 'And more')]

main_window = tk.Tk()
main_window.config(width=300, height=200)
main_window.title("Combobox")
# 提取元组内的用户名作为选项
combo = ttk.Combobox(values=[user[1] for user in all_users], width=35)

combo.place(x=50, y=50)
main_window.mainloop()

2. 同时显示ID和用户名

将元组格式化为自定义字符串,避免默认的元组字符串格式:

import tkinter as tk
from tkinter import ttk

all_users = [(7, 'Analize space me'), (8, 'Analize space me2'), 
    (9, 'And more')]

main_window = tk.Tk()
main_window.config(width=300, height=200)
main_window.title("Combobox")
# 格式化ID与用户名的显示文本
combo_values = [f"{user_id} - {username}" for user_id, username in all_users]
combo = ttk.Combobox(values=combo_values, width=35)

combo.place(x=50, y=50)
main_window.mainloop()

3. 获取选中项对应的ID

如果需要获取选中项的原始ID,可以通过映射字典实现:

# 建立用户名到ID的映射
user_id_map = {username: user_id for user_id, username in all_users}

# 当需要获取ID时
selected_username = combo.get()
selected_id = user_id_map.get(selected_username)

如果用了格式化后的字符串,也可以通过拆分文本提取ID:

selected_text = combo.get()
if selected_text:
    selected_id = int(selected_text.split(" - ")[0])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:26:18