忙活了三个多小时,连学带做,总算是搞出来了一个具有基本功能的串口通信PC机的GUI界面,Tkinter在python中,确实很好用,而且代码量确实也很少,不足的是Tkinter不自带combox,但是幸运的是我下载的2.7版本自带了包含有combox的ttk模块,于是乎问题就顺利解决了。
下面是源代码,一些错误提示功能还没有做,目前只是简单地实现了下位机与电脑的通信界面,下位机还是用的STM32F103
#=utf - 8编码 __author__='自由' 从Tkinter进口* 从串行进口* 进口ttk 类GUI(帧): def __init__(自我,掌握):=帧(主) frame.pack () #串口设置相关变量 自我。端口=0 自我。波特率=9600 #串口号提示 自我。lab1=标签(框、文本=靶蛄泻拧? self.lab1。网格(行=0,列=0,粘性=W) #串口号选择下拉菜单 自我。boxValue=https://www.yisu.com/zixun/StringVar () 自我。boxChoice=ttk。组合框(框架、textvariable=自我。boxValue状态=爸欢痢? 自我。boxChoice(“价值”)=(“COM1”、“COM2”、“COM3”,“COM4为”) self.boxChoice.current (0) self.boxChoice.bind (' & lt; & lt; ComboboxSelected>祝辞,self.Choice) self.boxChoice。网格(行=1,列=0,粘性=W) #波特率选择提示 自我。lab2=标签(框、文本=波特率设置的) self.lab2。网格(行=2,列=0,粘性=W) #波特率选择下拉菜单 自我。boxValueBaudrate=IntVar () 自我。BaudrateChoice=ttk。组合框(框架、textvariable=自我。boxValueBaudrate状态=爸欢痢? 自我。BaudrateChoice(“价值”)=(9600、115200) self.BaudrateChoice.current (0) self.BaudrateChoice.bind (' & lt; & lt; ComboboxSelected>祝辞,self.ChoiceBaudrate) self.BaudrateChoice。网格(行=3,列=0,粘性=W) #输出框提示 自我。lab3=标签(框、文本=消息显示) self.lab3。网格(行=0,列=1,粘性=W) #输出框 自我。显示=文本(框架、宽度=40岁,身高=5,包装=词) self.show。网格(行=1,列=1,行宽=4,粘性=W) #输入框提示 自我。lab4=标签(框、文本='请在这里输入!”) self.lab4。网格(=5行,=1,列粘性=W) #输入框 自我。输入=条目(框架、宽度=40) self.input。网格(=6行,=1,列行宽=4,粘性=W) #输入按钮 自我。button1=按钮(框、文本=笆淙搿?命令=self.Submit) self.button1。网格(行=11,列=1,粘性=E) #串口开启按钮 自我。button2=按钮(框架、文本=按蚩凇泵?self.open) self.button2。网格(行=7,列=0,粘性=W) #串口关闭按钮 自我。button3=按钮(框、文本=关闭串口,命令=self.close) self.button3。网格(=10行,列=0,粘性=W) #串口信息提示框 自我。showSerial=文本(框架、宽=20,高=2,包装=词) self.showSerial。网格(行=12,列=0,粘性=W) #串口初始化配置 自我。ser=串行() self.ser.setPort (self.port) # self.ser.setBaudrate (self.baudrate) # self.ser.open () #打印self.ser.isOpen () #打印self.ser def选择(自我、事件): 上下文=self.boxValue.get () 列表=[“COM1”、“COM2”,“COM3”,“COM4为”) 如果上下文列表: 自我。端口=list.index(上下文) self.ser.setPort (self.port) 打印self.port def ChoiceBaudrate(自我、事件): 自我。波特率=self.boxValueBaudrate.get () self.ser.setBaudrate (self.baudrate) 打印self.baudrate def提交(自我): context1=self.input.get () n=self.ser.write (context1) 输出=self.ser.read (n) 打印输出 self.show.delete (0.0) self.show.insert(0.0,输出) def开放(自我): self.ser.open () 如果self.ser.isOpen ()==True: self.showSerial.delete (0.0) self.showSerial.insert(0.0,“连续开错了!”) def关闭(自我): self.ser.close () 如果self.ser.isOpen ()==False: self.showSerial.delete (0.0) self.showSerial.insert(0.0,“连环已经关闭!”) 根=Tk () 根。标题(“连环GUI”) # root.geometry (“3000 x4000”) 应用=GUI(根) root.mainloop () >之前以上这篇对Python简单串口收发GUI界面的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
对Python简单串口收发GUI界面的实例详解