树莓派使用python编辑人机交互界面
用树莓派创建人机交互界面@
·
用树莓派创建人机交互界面@RPi HMI
使用python编程
导入tkinter库
# 在这里写上你的代码 :-)
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
root.title("zhx_jm")
'''root.attributes("-fullscreen",True)'''
root.geometry("300x100+300+100")## 注意这里是“长x宽+x轴+y轴”
btn1 = tk.Button(root, text="One button to click")
'''btn1["text"]="Click_it"'''
btn1.pack()
def test(e):
'''a window'''
messagebox.showinfo("Welcome to HMI","You Clicked.")
btn1.bind("<Button-1>",test)
root.mainloop()
其中,第一行启动tk库,开始图形编辑,第二行启动tkinter的messagebox为了出现弹窗。
用root创建窗口root=tk.Tk()和最后一句root.mainloop()配套使用。
然后设置窗口标题窗口大小,也可以全屏,但是全屏无法退出,目前没找到退出方法。
在窗口里创建按钮,并命名。命名有两种方法,分别是运行的这句和注释的下句。
创建按钮需要和xxx.pack()配套使用。
设置弹窗,弹窗标题和内容。
弹窗要和按钮绑定。
第二段程序:菜单和目录
import tkinter as tk
from tkinter import Menu
class GUI:
def __init__(self):
self.root = tk.Tk()
self.root.title('演示窗口')
self.root.geometry("500x200+1100+150")
# 创建主菜单实例
self.menubar = Menu(self.root)
# 显示菜单,将root根窗口的主菜单设置为menu
self.root.config(menu=self.menubar)
self.interface()
def interface(self):
""""界面编写位置"""
# 在 menubar 上设置菜单名,并关联一系列子菜单
self.menubar.add_cascade(label="文件", menu=self.papers())
self.menubar.add_cascade(label="查看", menu=self.about())
def papers(self):
"""
fmenu = Menu(self.menubar): 创建子菜单实例
tearoff=1: 1的话多了一个虚线,如果点击的话就会发现,这个菜单框可以独立出来显示
fmenu.add_separator(): 添加分隔符"--------"
"""
fmenu = Menu(self.menubar, tearoff=0)
# 创建单选框
for item in ['新建', '打开', '保存', '另存为']:
fmenu.add_command(label=item)
return fmenu
def about(self):
amenu = Menu(self.menubar, tearoff=0)
# 添加复选框
for item in ['项目复选框', '文件扩展名', '隐藏的项目']:
amenu.add_checkbutton(label=item)
return amenu
if __name__ == '__main__':
a = GUI()
a.root.mainloop()
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
第三段程序:多线程运行
要让按钮点击时其它功能可以正常运行,必须使用多线程。
import tkinter as tk
import threading # 导入多线程模块
class GUI:
def __init__(self):
self.root = tk.Tk()
self.root.title('演示窗口')
self.root.geometry("500x200+100+150")
self.interface()
def interface(self):
""""界面编写位置"""
self.Button0 = tk.Button(self.root, text="确定", command=self.start)
self.Button0.grid(row=0, column=0)
self.w1 = tk.Text(self.root, width=80, height=10)
self.w1.grid(row=1, column=0)
def event(self):
'''按钮事件,一直循环'''
a = 0
while True:
a += 1
self.w1.insert(1.0, str(a)+'\n')
print(a)
def start(self):
T1 = threading.Thread(name='t1', target=self.event, daemon=True) # 子线程
T1.start() # 启动
if __name__ == '__main__':
a = GUI()
a.root.mainloop()
引用文献:https://blog.csdn.net/qq_45664055/article/details/117625146感谢!

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)