我有一个带有组合框的 tkinter GUI 。
我想在启动GUI时将所有可用的COM端口放到组合框中,我需要在更改组合框值时执行一个功能。
我有 pyserial ,我正在使用 Python 2.7 。
我该怎么做?
更新
这是获取COM端口的功能..我想为我的GUI绑定它。我需要一个组合框更改事件。
import sys
import glob
import serial
def serial_ports():
ports = ['COM%s' % (i + 1) for i in range(256)]
result = []
for port in ports:
try:
s = serial.Serial(port)
s.close()
result.append(port)
except (OSError, serial.SerialException):
pass
return result
if __name__ == '__main__':
print(serial_ports())
我添加了此配置以获取端口到组合框。
self.comboComNum.configure(values=serial_ports())
问题
如何为获取COM端口实现更准确,更快速的功能?
如何获得组合框更改事件?
答案 0 :(得分:1)
有serial.tools.list_ports,也许它会更快(我不会使用Windows,所以我可以测试它)
import serial.tools.list_ports
print serial.tools.list_ports.comports()
您收到了评论链接示例combobox-get-selection
这里是较短的版本
import tkinter as tk
import tkinter.ttk as ttk
import serial.tools.list_ports
# --- functions ---
def serial_ports():
return serial.tools.list_ports.comports()
def on_select(event=None):
# get selection from event
print("event.widget:", event.widget.get())
# or get selection directly from combobox
print("comboboxes: ", cb.get())
# --- main ---
root = tk.Tk()
cb = ttk.Combobox(root, values=serial_ports())
cb.pack()
# assign function to combobox
cb.bind('<<ComboboxSelected>>', on_select)
root.mainloop()
答案 1 :(得分:0)
#Muestra los Puertos COM en Python
import serial.tools.list_ports
# Llamamos a la libreria que nos ayudara a buscar
# los puertos habilidatos.
find_com = serial.tools.list_ports
COM = find_com.comports()
#Nos devuelve una lista
# EL primer parametro es el puerto.
print(COM[0]) # Nombre completo del puerto.
print(COM[0][0]) # Solo puerto COM#