La variable ports_available contient un tableau de COMPORTS. Je veux que ceux-ci soient ajoutés au sous-menu "ports_menu" au démarrage de l'interface graphique afin que je puisse sélectionner l'un d'entre eux pour sélectionner le 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]

Merci, Dhruv Gupta

-1
dhruvguptadg 10 nov. 2020 à 18:43

1 réponse

Meilleure réponse

Sur la base des commentaires que vous avez publiés, vous souhaitez définir une variable basée sur une sélection de menu. Vous pouvez ajouter des boutons radio à un menu avec add_radiobutton. L'utilisation de boutons radio permettra à l'utilisateur de faire un choix exclusif.

Voici un exemple:

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()
0
Bryan Oakley 10 nov. 2020 à 18:58