python 控制台正确打印字符串 {"/dev/ttyS4","/dev/ttyS0","/dev/ttyACM0" } 以插入组合框选择中,但运行时组合框仅打印一个字符而不是每个选择,如下所示上面
from tkinter import *
import customtkinter
import serial.tools.list_ports
customtkinter.set_appearance_mode('dark')
customtkinter.set_default_color_theme("dark-blue")
#root = Tk()
root = customtkinter.CTk()
root.title('Combo Box Ports')
root.geometry('700x450')
get_sel_val = ''
#print(type(get_sel_val))
ports = serial.tools.list_ports.comports()
for p in ports:
# print(p.device)
#print(len(ports), 'ports found')
if (p.device) != (''):
get_sel_val = get_sel_val + '"' + (p.device) + '",'
#print(p)
#print(p.device)
#print (type(p.device))
print(get_sel_val)
my_combo = customtkinter.CTkComboBox(root, values = get_sel_val)
my_combo.pack(pady=20)
....
I was expecting tkinter combobox selectios to be
/dev/ttyS4
/dev/ttyS0
/dev/ttyACM0
not --> / d / e v
您需要传递一个可迭代对象(例如:列表、元组)作为
values
的值,并且您正在传递一个字符串。由于 Tkinter 将迭代这些值来创建下拉列表,因此您将把每个字符视为一个项目,因为这就是 python 迭代字符串的方式。
您应该构建一个列表而不是字符串,它可能看起来像这样:
get_sel_val = []
for p in ports:
if (p.device) != (''):
get_sel_val.append(p.device)
print(", ".join(get_sel_val))
my_combo = customtkinter.CTkComboBox(root, values = get_sel_val)