Python如何实现简单的GUI程序
这篇文章主要介绍Python如何实现简单的GUI程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、记事本源码
#python简易记事本fromtkinterimport*fromtkinterimportmessageboxfromtkinterimportfiledialogimportosfilename=''#文件名,全局变量defabout():messagebox.showinfo('提示','这是一个消息框')defopenFile():globalfilename#使用全局变量filename=filedialog.askopenfilename(defaultextension='.txt')#打开文件,默认扩展名是xtxtiffilename=='':#如果没有选择filename=Noneelse: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()defsaveOtherFile():globalfilenamef=filedialog.asksaveasfilename(initialfile='未命名.txt',defaultextension='.txt')#保存文件filename=froot.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='antiquewhite')#左边边界栏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简易记事本fromtkinterimport*fromtkinterimportmessageboxfromtkinterimportfiledialogimportosfilename=''#文件名,全局变量defabout():messagebox.showinfo('提示','这是一个消息框')defopenFile():globalfilename#使用全局变量filename=filedialog.askopenfilename(defaultextension='.txt')#打开文件,默认扩展名是xtxtiffilename=='':#如果没有选择filename=Noneelse: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()defsaveOtherFile():globalfilenamef=filedialog.asksaveasfilename(initialfile='未命名.txt',defaultextension='.txt')#保存文件filename=froot.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='antiquewhite')#左边边界栏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()
运行效果:
二、简单画图#画图程序importosimporttkinterimporttkinter.simpledialogimporttkinter.colorchooserimporttkinter.filedialogfromPILimportImagefromPILimportImageGrabdefopenItem():globalimgfilename=tkinter.filedialog.askopenfilename(title="Open",filetypes=[('Image','*.png*.gif')])iffilename:img=tkinter.PhotoImage(file=filename)canvas.create_image(400,300,image=img)defsaveItem():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')])ifnotfilename:returntry:iffilename[filename.index('.'):]in['.png','.gif']==False:filename+='.png'except:filename+='.png'im.save(filename)defclearItem():foriincanvas.find_all():canvas.delete(i)defcurveType():penType.set(1)deflineType():penType.set(2)defrectangleType():penType.set(3)deftextType():globaluserTextuserText=tkinter.simpledialog.askstring(title="Pleaseinputyourwords",prompt='')penType.set(4)deferaseType():penType.set(5)defchooseForeColor():globalforeColorforeColor=tkinter.colorchooser.askcolor()[1]defchooseBackColor():globalbackColorbackColor=tkinter.colorchooser.askcolor()[1]defonClickLeft(event):globaluserTextcanDraw.set(1)X.set(event.x)Y.set(event.y)ifpenType.get()==4:canvas.create_text(event.x,event.y,text=userText)defonMoveLeft(event):globallastPaint,foreColor,backColorifcanDraw.get()==0:returnifpenType.get()==1:#绘制曲线canvas.create_line(X.get(),Y.get(),event.x,event.y,fill=foreColor)X.set(event.x)Y.set(event.y)elifpenType.get()==2:#绘制直线(预览)try:canvas.delete(lastPaint)except:passlastPaint=canvas.create_line(X.get(),Y.get(),event.x,event.y,fill=foreColor)elifpenType.get()==3:#绘制矩形(预览)try:canvas.delete(lastPaint)except:passlastPaint=canvas.create_rectangle(X.get(),Y.get(),event.x,event.y,fill=backColor,outline=foreColor)elifpenType.get()==5:#橡皮擦canvas.create_rectangle(event.x-5,event.y-5,event.x+5,event.y+5,fill=backColor,outline=backColor)defonReleaseLeft(event):globallastPaint,foreColor,backColorlastPaint=0ifpenType.get()==2:#抬起左键画直线canvas.create_line(X.get(),Y.get(),event.x,event.y,fill=foreColor)elifpenType.get()==3:#抬起左键就画矩形canvas.create_rectangle(X.get(),Y.get(),event.x,event.y,fill=backColor,outline=foreColor)canDraw.set(0)defonReleaseRight(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='Saveas',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='PenType',menu=subMenu)menu.add_separator()menu.add_command(label='ForegroundColor',command=chooseForeColor)menu.add_command(label='BakckgroundColor',command=chooseBackColor)menu.add_separator()menu.add_command(label='Clear',command=clearItem)canvas.bind('<Button-1>',onClickLeft)canvas.bind('<B1-Motion>',onMoveLeft)canvas.bind('<ButtonRelease-1>',onReleaseLeft)canvas.bind('<ButtonRelease-3>',onReleaseRight)canvas.pack(fill=tkinter.BOTH,expand=tkinter.YES)root.mainloop()
运行效果:
以上是“Python如何实现简单的GUI程序”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。