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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。