将列表添加到 tkinter 中的文件子菜单

Adding a list to a file submenu in tkinter

变量ports_available包含一个COMPORTS数组。我希望在启动 GUI 时将它们添加到子菜单“ports_menu”,这样我就可以 select 其中任何一个用于 select COMPORT。

global ports_available
ports_available = [comport.device for comport in serial.tools.list_ports.comports()]

global port_select
port_select = "COM1"

#Create Menu
my_menu = Menu(window)
window.config(menu = my_menu)

# Add Tool Menu
tool_menu = Menu(my_menu, tearoff = False)
my_menu.add_cascade(label = "Tools", menu = tool_menu)
tool_menu.add_command(label = "Bold", command =bold_it)
tool_menu.add_command(label = "Italic", command =italic_it)

#Menu for ports

ports_menu = Menu(tool_menu, tearoff = False)
tool_menu.add_cascade(label = "Ports", menu = ports_menu)

for name in ports_available:

    ports_menu.add_checkbutton(label = name, variable = port_select)

[![When i select any one of the option everything gets selected][1]][1]

谢谢, 德鲁夫·古普塔

根据您发表的评论,您想要的是根据菜单选择设置一个变量。您可以使用 add_radiobutton 将单选按钮添加到菜单。使用单选按钮将允许用户做出独占选择。

这是一个例子:

import tkinter as tk

ports = ["COM1", "COM2", "COM3"]

def show_value():
    print(f"selected port: {port_selection.get()}")

root = tk.Tk()

port_selection = tk.StringVar(value=ports[0])
menubar = tk.Menu(root)
port_menu = tk.Menu(menubar)
for port in ports:
    port_menu.add_radiobutton(label=port, value=port, variable=port_selection, command=show_value)

root.configure(menu=menubar)
menubar.add_cascade(label="Port", menu=port_menu)

root.mainloop()