Python2 Macbook OptionMenu 下拉选项 不显示默认值,第一个选项消失的问题

本文档记录了在使用Tkinter进行GUI编程时遇到的两个问题及其解决方案。问题1是OptionMenu默认值不显示,通过将tkinter替换为ttk并更新OptionMenu调用解决了此问题。问题2是OptionMenu的第一个选项不显示,解决方法是设置默认值,可以是列表的第一项或自定义字符串。这两个问题的解决有助于完善Tkinter应用的界面显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 问题 1:下拉选项默认值不显示问题:

self.run_mode = [ SocRunMode.run_soc.value,SocRunMode.run_grr.value]
self.run_mode_var = tk.StringVar()
self.run_mode_var.trace("w", self.onselected_run_mode_menu)
run_mode_option = tk.OptionMenu(right_frame, self.run_mode_var
                                 , *self.run_mode)
run_mode_option.grid(row=0, column=2, pady=10, padx=10)

 

 

如图: 显示参考https://blog.csdn.net/understand_XZ/article/details/102746978 同学的建议把 tk,换成 ttk

增加ttk 引入,并改了 OptionMenu 调用。显示正常

import tkinter as tk
from tkinter import ttk

...

run_mode_option = ttk.OptionMenu(right_frame, self.run_mode_var , *self.run_mode) 

问题 2: 下拉第一个选项消失,不显示问题:

解决: 参考源码,下拉选择项要设置一个默认值,如不单独设置,选项列表第一个会拿来做默认值:

def __init__(self, master, variable, default=None, *values, **kwargs):

我的解决办法1是:把列表第一项单独拿出来传递,或者

run_mode_option = ttk.OptionMenu(right_frame, self.run_mode_var
                                 , self.run_mode[0], *self.run_mode)

 方法 2: 或者直接写默认值:

run_mode_option = ttk.OptionMenu(right_frame, self.run_mode_var , “SOC”, *self.run_mode)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值