GUI编程——Tkinter、pyinstaller
来源:互联网 发布:访问服务器8080端口 编辑:程序博客网 时间:2024/06/06 05:24
实现了一个图片转字符画的小程序
使用pyinstaller可以打包成exe程序在windows下方便使用
#!/usr/bin/env python#-*- coding: utf-8 -*-from tkinter import *from tkinter.filedialog import askopenfilename,askdirectoryimport tkinter.messagebox as messageboxclass Application(Frame): def __init__(self,master=None): Frame.__init__(self,master) self.openpath = StringVar() self.savepath = StringVar() self.char_list="#*abcdeogqp;:',. " self.pack() self.create_widgets() def selectOpenFilename(self): openpath_=askopenfilename() self.openpath.set(openpath_) def selectSaveDirectory(self): savepath_=askdirectory() self.savepath.set(savepath_) def get_char(self,r,g,b,alpha=256): if alpha==0: return ' ' length=len(self.char_list) gray=int(0.2126*r+0.7152*g+0.0722*b) unit=(256/length) return self.char_list[int(gray/unit)] def img2text(self): from PIL import Image import os img_openpath=self.OpenEntry.get() img_savepath=self.SaveEntry.get() try: img=Image.open(img_openpath) except Exception: messagebox.showinfo("failed", "请选择正确格式图片!") return img_name = img_openpath.split('/')[-1].split('.')[0] WIDTH = 120 x,y=img.size HEIGHT=int(WIDTH/x*y) img=img.resize((WIDTH,HEIGHT),Image.NEAREST) txt='' for j in range(HEIGHT): for i in range(WIDTH): txt+=self.get_char(*img.getpixel((i,j))) txt+='\n' if img_savepath == '': savepath = os.path.join('/'.join(img_openpath.split('/')[:-1]), '%s.txt' % img_name) messagebox.showinfo('info', "未选路径,保存到图片路径目录下") else: savepath = os.path.join(img_savepath, '%s.txt'%img_name) try: with open(savepath,'w') as f: f.write(txt) messagebox.showinfo("success","转换成功!") except Exception: messagebox.showinfo("failed","转换出现错误,请重试!") def create_widgets(self): self.OpenLabel=Label(self,text="选择图片:") self.OpenLabel.grid(row=0,column=0) self.OpenEntry=Entry(self,textvariable=self.openpath,width=45) self.OpenEntry.grid(row=0,column=1) self.OpenButton=Button(self,text="选择图片",command=self.selectOpenFilename) self.OpenButton.grid(row=0,column=2) self.SaveLabel=Label(self,text="选择保存路径:") self.SaveLabel.grid(row=1,column=0) self.SaveEntry=Entry(self,textvariable=self.savepath,width=45) self.SaveEntry.grid(row=1,column=1) self.SaveButton = Button(self, text="选择保存路径", command=self.selectSaveDirectory) self.SaveButton.grid(row=1, column=2) self.ChangeButton=Button(self,text="开始转换",command=self.img2text) self.ChangeButton.grid(row=2,column=2) self.Quit=Button(self,text="退出",command=root.destroy,fg="red") self.Quit.grid(row=2,column=0)root=Tk()root.title("图片转字符画")root.geometry("600x100")app=Application(master=root)app.mainloop()
阅读全文
0 0
- GUI编程——Tkinter、pyinstaller
- python—Tkinter GUI编程
- Tkinter GUI编程——简介
- Python GUI编程(Tkinter)
- Python GUI编程(Tkinter)
- Python GUI编程(Tkinter)
- Python GUI编程(Tkinter)
- Python GUI编程(Tkinter)
- python GUI编程(Tkinter)
- python GUI编程(Tkinter)
- python GUI编程(Tkinter)
- python GUI编程(Tkinter)
- python GUI编程(Tkinter)
- Python GUI tkinter编程
- Python GUI编程(Tkinter)
- Python GUI编程(Tkinter)
- 使用tkinter和pyinstaller开发一个GUI爬虫程序
- Stage5--Python GUI编程TKinter
- C++一本通题库1007
- HDFS架构和读写流程详解
- Tomcat和Java及servlet使用注意事项
- KD树的C++实现
- sqlalchemy数据操作
- GUI编程——Tkinter、pyinstaller
- [二分 树形DP] CEOI2017. Mousetrap
- 深入理解不同的二分查找C++
- 《Effective C++》读后总结(三)尽量使用const
- Mac 中 Homebrew 的一些使用笔记
- 【整体二分+树状数组区间加区间和】BZOJ3110 [Zjoi2013]K大数查询
- 用龙芯1c库在裸机编程环境中实现硬件定时器中断
- 第十课、C运算符
- [转载自宋博士博客]如何在ANSYS WORKBENCH中进行多载荷步的静力分析?