问题 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)