Python如何实现简单的GUI程序
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍Python如何实现简单的GUI程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、记事本源码#python简易记事本from tkinter import
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
百单网互联网科技有限公司怎么样
蓝思科技飞鸽互联网
互联网核心科技是什么
广州互联网科技公司
朗涯互联网科技
北京互联网络科技有限公司
齐家互联网科技有限公司
互联网科技视频素材
丰台科技园 互联网公司
天速互联网络科技有限公司
团飞科技与伯堂互联网服务平台
搜狐科技互联网
电子商务与互联网科技的关系
半导体行业属于互联网高科技类吗
东营紫格互联网科技
互联网科技收购价值
美国五大互联网科技公司市值多少
三亚科技创新互联网基地
恒生互联网科技趋势
中国主要互联网科技公司
互联网科技公司起名
江苏根荣互联网科技
互联网 科技公司
万易互联网科技
互联网科技公司怎么样
碳银互联网科技
亿人帮互联网科技
互联网 科技馆
下一代互联网重大应用科技园
互联网科技创新方面的资料