Com portları güncellemek

Merhaba kullanıcıdan öncesinde bağlanmak istediği Com port noktasını seçmesini istiyorum. Bunun için şu kodu kullanıyorum;

ports =serial.tools.list_ports.comports()
def on_select(event=None):
    global SelectedPort
    SelectedPort = cb.get()
...
available_ports = []
for port in ports:
    available_ports.append(port.device)
..
cb = ttk.Combobox(com_selected, values=available_ports, state='readonly')
cb.place(relx=0.1, rely=0.44)
cb.bind('<<ComboboxSelected>>', on_select)

Daha sonra SelectedPort değişkenimi pyserial ile kullanıyorum buraya kadar herhangi bir sıkıntı yok ancak kullanıcı program açıkken herhangi bir bağlantı problemi yaşarsa (örneğin bağlı olduğu cihazı program açıkken çekti) showerror ile ekrana yazıp sonrasında tekrar Port seçme ekranına dönüyorum ancak her seferinde bu listenin baştan güncellenmesini istiyorum benim kodumda program sırasında kapanan portlar da hala combobox'ta gözüküyor. Her seferinde tüm açık portları taramasını nasıl sağlarım

Merhaba;

Port taramasını ve combobox’ı ayrı fonksiyonlara atın. Port taramasını yapan fonksiyon kullanılabilir portları bir liste halinde return etsin. Combobox’ın olduğu fonksiyon da, çalışma sırası combobox’a geldiğinde; combobox önce port taramasından çıkan liste sonucunu alsın (return edilen) ardından combobox’ın ‘values’ parametresine versin.

Örneğin:

def scanning_ports():
    ports = serial.tools.list_ports.comports()
    available_ports = [port.device for port in ports]

    return available_ports

def design():
    ttk.comboBox(com_selected, values=scanning_ports(), state='readonly')

def start():
    design()

if __name__ == "__main__":
    start()

Çok teşekkür ederim dediğiniz gibi return edilen değeri combobox'ta values olarak yazdım ve çözüldü iyi çalışmalar

Teşekkürler, size de.