python写gui程序,python开发gui程序

  python写gui程序,python开发gui程序

  这篇文章主要为大家详细介绍了计算机编程语言简单的图像使用者界面程序示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

  

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

  

一、记事本

  源码

  #python简易记事本

  来自tkinter导入*

  从图形界面导入messagebox

  从图形界面导入文件对话框

  导入操作系统

  文件名= #文件名,全局变量

  def about():

  messagebox.showinfo(提示,这是一个消息框)

  def openFile():

  全局文件名#使用全局变量

  文件名=文件对话框。askopenfilename(默认扩展名= .txt) #打开文件,默认扩展名是xtxt

  if filename==: #如果没有选择

  文件名=无

  else:

  根。标题(文件名: 操作系统。路径。基本名称(文件名))#将文件名显示在标题栏中

  textPad.delete(1.0,END) #删除文本框中原有内容

  f=打开(文件名, r ,编码=UTF-8) #获取文件中内容

  textPad.insert(1.0,f.read()) #显示到文本框

  f.close()

  def saveOtherFile():

  全局文件名

  f=文件对话框。asksaveasfilename(初始文件=未命名txt ,defaultextension= .txt) #保存文件

  文件名=f

  根。标题(文件名: 操作系统。路径。基本名称(文件名))

  fh=打开(f, w ,编码=UTF-8) #只写方式打开文件

  msg=textPad.get(1.0,END) #从文本框中获取内容

  写吧

  fh.close()

  root=Tk() #设置菜单栏

  root.title(记事本)

  根。几何( 500 x500 100 100 )#宽度x高度x y

  菜单栏=菜单(根)

  root.config(menu=menubar)

  文件菜单=菜单(菜单栏)#第一个菜单栏

  filemenu.add_command(label=打开,accelerator=Ctrl N ,command=openFile)

  filemenu.add_command(label=保存,accelerator=Ctrl T ,command=saveOtherFile)

  menubar.add_cascade(label=文件,菜单=文件菜单)

  关于菜单=菜单(菜单栏)

  aboutmenu.add_command(label=关于,加速器=Ctrl Y ,命令=关于)

  menubar.add_cascade(label=帮助,菜单=关于菜单)

  status=Label(root,text=Ln20 ,bd=1,relief=SUNKEN,anchor=W) #底部状态栏

  status.pack(side=BOTTOM,fill=X)

  lnlabel=Label(root,width=2,bg=古董白)#左边边界栏

  lnlabel.pack(side=LEFT,fill=Y)

  textPad=Text(root,undo=True) #设置文本框

  textPad.pack(expand=YES,fill=BOTH)

  scroll=Scrollbar(textPad) #右边进度条栏

  textpad。config(yscrollcommand=scroll。设置)

  卷轴。config(command=textpad。y视图)

  scroll.pack(side=RIGHT,fill=Y)

  root.mainloop()#python简易记事本

  来自tkinter导入*

  来自坦克

  inter 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()

  运行效果:

  

  

  

二、简单画图

  

# 画图程序

  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()

  运行效果:

  

  

  

总结

  本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT软件开发工作室的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: