因为工作需要,需要制作一个上位机小工具,接触了一下Tkinter,完成了一个小工具的制作,现在记录一下Tkinter的简单上手。
该工具可以实现以下功能。
Tkinter总共21个核心组件:
Toplevel、Label、Button、Canvas、Checkbutton、Entry、Frame、LabelFrame、Listbox、Menu、Menubutton、Message、OptionMenu、PaneWindow、Radiobutton、Scale、Scrollbar、Spinbox、Text、Bitmap、Image。
本文主要讲述以下几个组件:
Label、Button、Checkbutton、Entry、Menu。
下图具有以下功能:
在“前轮占空比“、”后轮占空比“等地方能够填入数字或者其他你想要的字符,点击发送能够实现你要将这些数据发往哪里。复选框的位置可以☑️做选择。硬件设备初始化和按键设置实现鼠标点击,会有相应的动作。
代码如下:
from tkinter import *
#这个是一些新特性,也可以不用
from tkinter.ttk import *
def back_perception():
s2 = e2.get()
print("后轮占空比 :",s2)
def front_perception():
s1 = e1.get()
print("前轮占空比 :",s1)
def cycle_time():
s3 = e3.get()
s4 = e4.get()
print("前轮周期 :",s3)
print("后轮周期 :",s4)
def set_all_config ():
print("硬件设备初始化")
def checkbuttons():
print("复选框")
FCA = Tk()
FCA.wm_title("调试上位机")
l1 = Label(FCA,text = "前轮占空比 :",background = "green")
l1.grid(row = 0,column = 0,sticky=W)
e1 = Entry(FCA)
e1.grid(row = 0,column = 1,sticky=E)
b1= Button(FCA,text = "发送",command = front_perception)
b1.grid(row = 0,column = 2,sticky=E)
l2 = Label(FCA,text = "后轮占空比 :")
l2.grid(row = 1,column = 0,sticky=W)
e2 = Entry(FCA)
e2.grid(row = 1,column = 1,sticky=E)
b2= Button(FCA,text = "发送",command = back_perception)
b2.grid(row = 1,column = 2,sticky=E)
#常见的鼠标左键单击如下:,其中的 1 换成 3 表示右键被单击,为 2 的时候表示鼠标中键
#表示 A 键被按下,其中的 A 可以换成其他的键位。
#表示按下的是 Ctrl 和 V 键,V 可以换成其他键位。
#表示按下的是 F1 键,对于 Fn 系列的,都可以随便换。
b5 = Button(FCA,text = "按键设置")
b5["width"] = 20
b5.bind("",cycle_time)
b5.grid(row = 1,column = 3,sticky=E)
l3 = Label(FCA,text = "前轮周期 :")
l3.grid(row = 2,column = 0,sticky=W)
e3 = Entry(FCA)
e3.grid(row = 2,column = 1,sticky=E)
l4 = Label(FCA,text = "后轮周期 :")
l4.grid(row = 2,column = 2,sticky=W)
e4 = Entry(FCA)
e4.grid(row = 2,column = 3,sticky=E)
b3= Button(FCA,text = "发送",command = cycle_time)
b3.grid(row = 2,column = 4,sticky=E)
b4= Button(FCA,text = "硬件设备初始化",command = set_all_config)
b4.grid(row = 0,column = 3,sticky=E)
c3 = Checkbutton(FCA,text = "复选框",command = checkbuttons)
c3.grid(row = 3,column = 0,sticky=E)
#此处可以实现在界面上直接文字输出
c = Label(FCA,text = "")
c.grid(row = 4,column = 0)
c["text"] = "直接写在封面上"
FCA.mainloop()
另外可以实现菜单栏的设置
代码如下:
from tkinter import *
from tkinter.ttk import *
root = Tk()
menubar = Menu(root)
fmenu = Menu(menubar)
for item in ["新建","打开","保存","另存为"]:
fmenu.add_command(label = item)
emenu = Menu(menubar)
for item in ["复制","粘贴","剪切"]:
emenu.add_command(label = item)
vmenu = Menu(menubar)
for item in ["默认视图","新式视图"]:
vmenu.add_command(label = item)
#添加分割线
vmenu.add_separator()
for item in ["分割线","分割线2"]:
vmenu.add_command(label = item)
#添加复选框
amenu = Menu(menubar)
for item in ["版权信息","其他说明"]:
amenu.add_checkbutton(label = item)
for item in ["复选2","复选"]:
amenu.add_radiobutton(label = item)
menubar.add_cascade(label = "文件",menu = fmenu)
menubar.add_cascade(label = "编辑",menu = emenu)
menubar.add_cascade(label = "视图",menu = vmenu)
menubar.add_cascade(label = "关于",menu = amenu)
root["menu"] = menubar
root.mainloop()
可以实现右键选择功能
代码如下:
from tkinter import *
#右键功能
def python():
global root
Label(root,text = "I love python").pack()
root =Tk()
menubar = Menu(root)
for item in ["新建","打开","保存","另存为"]:
menubar.add_command(label = item)
menubar.add_command(label = "python",command =python)
def pop(event):
menubar.post(event.x_root, event.y_root)
root.bind("",pop)
root.mainloop()