Python如何实现简单的GUI程序
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要介绍Python如何实现简单的GUI程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、记事本源码#python简易记事本from tkinter import
千家信息网最后更新 2025年01月31日Python如何实现简单的GUI程序
这篇文章主要介绍Python如何实现简单的GUI程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、记事本
源码
#python简易记事本from tkinter import *from tkinter import messageboxfrom tkinter import filedialogimport osfilename='' #文件名,全局变量def about(): messagebox.showinfo('提示','这是一个消息框')def openFile(): global filename #使用全局变量 filename=filedialog.askopenfilename(defaultextension='.txt') #打开文件,默认扩展名是xtxt if filename=='': #如果没有选择 filename=None else: root.title('FileName:'+os.path.basename(filename)) #将文件名显示在标题栏中 textPad.delete(1.0,END) #删除文本框中原有内容 f=open(filename,'r',encoding='UTF-8') #获取文件中内容 textPad.insert(1.0,f.read()) #显示到文本框 f.close()def saveOtherFile(): global filename f=filedialog.asksaveasfilename(initialfile='未命名.txt',defaultextension='.txt') #保存文件 filename=f root.title('FileName:' + os.path.basename(filename)) fh=open(f,'w',encoding='UTF-8') #只写方式打开文件 msg=textPad.get(1.0,END) #从文本框中获取内容 fh.write(msg) fh.close()root=Tk() #设置菜单栏root.title('记事本')root.geometry('500x500+100+100') #widthxheight+x+ymenubar=Menu(root)root.config(menu=menubar)filemenu=Menu(menubar) #第一个菜单栏filemenu.add_command(label='打开',accelerator='Ctrl+N',command=openFile)filemenu.add_command(label='保存',accelerator='Ctrl+T',command=saveOtherFile)menubar.add_cascade(label='文件',menu=filemenu)aboutmenu=Menu(menubar)aboutmenu.add_command(label='关于',accelerator='Ctrl+Y',command=about)menubar.add_cascade(label='帮助',menu=aboutmenu)status=Label(root,text='Ln20',bd=1,relief=SUNKEN,anchor=W) #底部状态栏status.pack(side=BOTTOM,fill=X)lnlabel=Label(root,width=2,bg='antique white') #左边边界栏lnlabel.pack(side=LEFT,fill=Y)textPad=Text(root,undo=True) #设置文本框textPad.pack(expand=YES,fill=BOTH)scroll=Scrollbar(textPad) #右边进度条栏textPad.config(yscrollcommand=scroll.set)scroll.config(command=textPad.yview)scroll.pack(side=RIGHT,fill=Y)root.mainloop()#python简易记事本from tkinter import *from tkinter import messageboxfrom tkinter import filedialogimport osfilename='' #文件名,全局变量def about(): messagebox.showinfo('提示','这是一个消息框')def openFile(): global filename #使用全局变量 filename=filedialog.askopenfilename(defaultextension='.txt') #打开文件,默认扩展名是xtxt if filename=='': #如果没有选择 filename=None else: root.title('FileName:'+os.path.basename(filename)) #将文件名显示在标题栏中 textPad.delete(1.0,END) #删除文本框中原有内容 f=open(filename,'r',encoding='UTF-8') #获取文件中内容 textPad.insert(1.0,f.read()) #显示到文本框 f.close()def saveOtherFile(): global filename f=filedialog.asksaveasfilename(initialfile='未命名.txt',defaultextension='.txt') #保存文件 filename=f root.title('FileName:' + os.path.basename(filename)) fh=open(f,'w',encoding='UTF-8') #只写方式打开文件 msg=textPad.get(1.0,END) #从文本框中获取内容 fh.write(msg) fh.close()root=Tk() #设置菜单栏root.title('记事本')root.geometry('500x500+100+100') #widthxheight+x+ymenubar=Menu(root)root.config(menu=menubar)filemenu=Menu(menubar) #第一个菜单栏filemenu.add_command(label='打开',accelerator='Ctrl+N',command=openFile)filemenu.add_command(label='保存',accelerator='Ctrl+T',command=saveOtherFile)menubar.add_cascade(label='文件',menu=filemenu)aboutmenu=Menu(menubar)aboutmenu.add_command(label='关于',accelerator='Ctrl+Y',command=about)menubar.add_cascade(label='帮助',menu=aboutmenu)status=Label(root,text='Ln20',bd=1,relief=SUNKEN,anchor=W) #底部状态栏status.pack(side=BOTTOM,fill=X)lnlabel=Label(root,width=2,bg='antique white') #左边边界栏lnlabel.pack(side=LEFT,fill=Y)textPad=Text(root,undo=True) #设置文本框textPad.pack(expand=YES,fill=BOTH)scroll=Scrollbar(textPad) #右边进度条栏textPad.config(yscrollcommand=scroll.set)scroll.config(command=textPad.yview)scroll.pack(side=RIGHT,fill=Y)root.mainloop()
运行效果:
二、简单画图
# 画图程序import osimport tkinterimport tkinter.simpledialogimport tkinter.colorchooserimport tkinter.filedialogfrom PIL import Imagefrom PIL import ImageGrabdef openItem(): global img filename=tkinter.filedialog.askopenfilename(title="Open",filetypes=[('Image','*.png *.gif')]) if filename: img=tkinter.PhotoImage(file=filename) canvas.create_image(400,300,image=img)def saveItem(): saveX=int(root.winfo_rootx()) saveY=int(root.winfo_rooty()) saveW=root.winfo_width() saveH=root.winfo_height() im=ImageGrab.grab((saveX,saveY,saveX+saveW,saveY+saveH)) filename=tkinter.filedialog.asksaveasfilename(title='Save',filetypes=[('Image','*.png *.gif')]) if not filename: return try: if filename[filename.index('.'):] in ['.png','.gif']==False: filename+='.png' except: filename+='.png' im.save(filename)def clearItem(): for i in canvas.find_all(): canvas.delete(i)def curveType(): penType.set(1)def lineType(): penType.set(2)def rectangleType(): penType.set(3)def textType(): global userText userText=tkinter.simpledialog.askstring(title="Please input your words", prompt='') penType.set(4)def eraseType(): penType.set(5)def chooseForeColor(): global foreColor foreColor=tkinter.colorchooser.askcolor()[1]def chooseBackColor(): global backColor backColor=tkinter.colorchooser.askcolor()[1]def onClickLeft(event): global userText canDraw.set(1) X.set(event.x) Y.set(event.y) if penType.get()==4: canvas.create_text(event.x,event.y,text=userText)def onMoveLeft(event): global lastPaint,foreColor,backColor if canDraw.get()==0: return if penType.get()==1: #绘制曲线 canvas.create_line(X.get(),Y.get(),event.x,event.y,fill=foreColor) X.set(event.x) Y.set(event.y) elif penType.get()==2: #绘制直线(预览) try: canvas.delete(lastPaint) except: pass lastPaint=canvas.create_line(X.get(),Y.get(),event.x,event.y,fill=foreColor) elif penType.get()==3: #绘制矩形(预览) try: canvas.delete(lastPaint) except: pass lastPaint=canvas.create_rectangle(X.get(),Y.get(),event.x,event.y,fill=backColor,outline=foreColor) elif penType.get()==5: #橡皮擦 canvas.create_rectangle(event.x-5,event.y-5,event.x+5,event.y+5,fill=backColor,outline=backColor)def onReleaseLeft(event): global lastPaint,foreColor,backColor lastPaint=0 if penType.get()==2: #抬起左键画直线 canvas.create_line(X.get(),Y.get(),event.x,event.y,fill=foreColor) elif penType.get()==3: #抬起左键就画矩形 canvas.create_rectangle(X.get(),Y.get(),event.x,event.y,fill=backColor,outline=foreColor) canDraw.set(0)def onReleaseRight(event): menu.post(event.x_root, event.y_root)root=tkinter.Tk()root.title("Paint")root.geometry("800x600+280+50")lastPaint=0userText=""foreColor='black'backColor='white'X=tkinter.IntVar(value=0)Y=tkinter.IntVar(value=0)canDraw=tkinter.IntVar(value=0) #能否画图,1:能,0:不能penType=tkinter.IntVar(value=1) #画笔类型,1:曲线,2:直线,3:矩形,4:文本,5:橡皮擦menu=tkinter.Menu(root,tearoff=0)subMenu=tkinter.Menu(menu,tearoff=0)img=tkinter.PhotoImage()canvas=tkinter.Canvas(root,bg='white',width=800,height=600)canvas.create_image(800,600,image=img)menu.add_command(label='Open',command=openItem)menu.add_command(label='Save as',command=saveItem)menu.add_separator()subMenu.add_command(label='Curve',command=curveType)subMenu.add_command(label='Line',command=lineType)subMenu.add_command(label='Rectangle',command=rectangleType)subMenu.add_command(label='Text',command=textType)subMenu.add_command(label='Erase',command=eraseType)menu.add_cascade(label='Pen Type',menu=subMenu)menu.add_separator()menu.add_command(label='Foreground Color',command=chooseForeColor)menu.add_command(label='Bakckground Color',command=chooseBackColor)menu.add_separator()menu.add_command(label='Clear',command=clearItem)canvas.bind('', onClickLeft)canvas.bind(' ',onMoveLeft)canvas.bind(' ',onReleaseLeft)canvas.bind(' ',onReleaseRight)canvas.pack(fill=tkinter.BOTH,expand=tkinter.YES)root.mainloop()
运行效果:
以上是"Python如何实现简单的GUI程序"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
文件
文本
内容
记事本
全局
变量
文件名
菜单
程序
直线
矩形
帮助
右边
底部
扩展名
效果
方式
曲线
标题
橡皮
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全 道哥
服务器压力大
网络安全维护视频
m1芯片不适合网络安全
高速中牟服务器中石化电话
随着互联网科技的快速发展
实时数据库领域有哪些
传奇霸业服务器
软件开发以后做什么工作
网络技术专业毕业设计
重庆软件开发培训学校
软件开发企业投入成本
体验网络安全教育
软件开发源代码 版权
擎天网络技术服务有限公司
传奇外挂软件开发
软件开发培训学校192
软件开发新思想和旧思想
电子政务个性化软件开发支持
数据库表的操作有哪些
热血江湖05年第一个服务器
浙江快克电梯莫拉克服务器代码
服务器之间的线叫什么4UQPI
咸阳软件开发电话
通过服务器查看计算机登录次数
软件开发师面试简历模板
国家网络安全信息化建设
济南博盛天成网络技术
服务器批处理权限
陕西大宗仓储软件开发