USB 设备检查器的 Tkinter 条目

Tkinter entry for USB device checker

我有一个功能可以检查 USB 设备是否存在,returns 可以自行检查结果,还有一个 Tkinter GUI 可以接受此功能的输入。 该函数单独工作得很好,但不能与 Tkinter GUI 一起使用!(即使我将条目留空,所以该函数采用默认变量)

我尝试将输入表单更改为 int 或 float,但没有用

def check_USB(vid=0x1447,pid=0x8092):#pings usb device
 logger.debug('checking USB Connection')
 dev = usb.core.find(idVendor=vid, idProduct= pid)
 if dev is None:
    logger.debug ('ALERT our USB device is NOT connected')
 else:
    logger.debug('our USB device is connected') 

 entry_VID = Entry(second_frame, bg="white")
 entry_VID.grid(row=8,column=1,padx=0,pady=5)
 entry_PID = Entry(second_frame, bg="white")
 entry_PID.grid(row=10,column=1,padx=0,pady=5)

 check_USB(vid=int( entry_VID.get() ),pid=int( entry_PID.get() ) )

我尝试了这个相同的过程,使用了一个 ping 一个 ip 地址的函数(但是输入的 ip 地址是一个字符串)并且它工作得很好,但是使用这个脚本我总是得到设备没有连接。

错误:(0x1447 是我输入的 vid 和 0x8092 的 pid)

invalid literal for int() with base 10:'0x1447'

根据您当前的设置,check_USB(vid=entry_VID.get(),pid=entry_PID.get()) 立即变为 运行。您需要等待用户填写条目。它可以是这样的:

entry_VID = Entry(second_frame, bg="white")
entry_VID.grid(row=8,column=1,padx=0,pady=5)
entry_PID = Entry(second_frame, bg="white")
entry_PID.grid(row=10,column=1,padx=0,pady=5)

def usb_func():  
    check_USB(vid=int(entry_VID.get(),16),
              pid=int(entry_PID.get(),16))

Button(second_frame,text="Click",command=usb_func).grid(row=11,column=1)

然后您可以仅在用户按下按钮时执行该功能,或者如果需要,甚至可以进行一些验证以检查用户是否在条目中输入了正确的数字。