大蟒蛇python教程共享Python简单的GUI程序示例详解

目录
  • 一、记事本
  • 二、简单画图
  • 总结

一、记事本

源码

#python简易记事本  from tkinter import *  from tkinter import messagebox  from tkinter import filedialog  import os  filename=''   #文件名,全局变量  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+y  menubar=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 messagebox  from tkinter import filedialog  import os  filename=''   #文件名,全局变量  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+y  menubar=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简单的GUI程序示例详解

二、简单画图

# 画图程序  import os  import tkinter  import tkinter.simpledialog  import tkinter.colorchooser  import tkinter.filedialog  from pil import image  from pil import imagegrab  def 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=0  usertext=""  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('<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程序示例详解

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注<计算机技术网(www.ctvol.com)!!>的更多内容!   

需要了解更多python教程分享Python简单的GUI程序示例详解,都可以关注python教程分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/pythontutorial/1047697.html

(0)
上一篇 2022年2月13日
下一篇 2022年2月13日

精彩推荐