利用Python中的tkinter和MyQR制作个性二维码转换器

最近一直在进行Python的学习目前还属于初级阶段,正好学习到了GUI部分,tkinter这部分确实还是蛮需要联系的,于是就从网上找到了这么一个小程序的创意,制作个性二维码,主要就是有一个图片背景的二维码:

生成效果
功能实现部分主要还是通过MyQR库来实现,实际上myqr.run()一个函数就可以实现功能,所以用来练习tkinter的使用还是不错的。

最终成果

还是没有多好看,但是总归来说,自己还是比较满意自己的进步的。

上代码:

from MyQR import myqr
from tkinter import *
import tkinter.messagebox
import tkinter.filedialog
import os


#背景图片浏览功能
def browse_picture():
    fileName = tkinter.filedialog.askopenfilename()
    fileName_picture.set(fileName)

#保存路径浏览功能
def browse_save():
    fileName = tkinter.filedialog.asksaveasfilename()
    (filepath, name) = os.path.split(fileName)
    fileName_save.set(filepath)
    global tempfilename
    tempfilename += name




#生成功能
def generate():
    content = e1.get()
    background = e2.get()
    save_location = e3.get()
    try:
        if background == '':
            myqr.run(words = content,save_dir = save_location,save_name = tempfilename,colorized = True)
        else:
            myqr.run(words = content,save_dir = save_location,picture = background,save_name = tempfilename,colorized = True)
    except ValueError as reason:
        tkinter.messagebox.showerror(title='错误', message = reason) 



root = Tk()
root.title('个性二维码')#标题
root.resizable(0,0)#不可调整大小

tempfilename = ''

#文本部分
Label(root, text="链接内容:").grid(row=0,padx = 5)
Label(root, text="图片背景:").grid(row=1,pady = 10)
Label(root, text="保存路径:").grid(row=2,padx = 5)

#输入框部分
fileName_picture = StringVar()
fileName_save = StringVar()
e1 = Entry(root,width = 40)
e2 = Entry(root,width = 40,textvariable = fileName_picture)
e3 = Entry(root,width = 40,textvariable = fileName_save)
e1.grid(row = 0,column = 1,padx = 5,pady = 5)
e2.grid(row = 1,column = 1,padx = 5,pady = 5)
e3.grid(row = 2,column = 1,padx = 5,pady = 5)


#按钮部分
b1 = Button(root,text = '生成',bd = 5,width = 10,command = generate).grid(row=4, column=0, sticky=W, padx=10, pady=5)
b2 = Button(root,text = '退出',bd = 5,width = 10,command = root.quit).grid(row=4, column=1, sticky=E, padx=10, pady=5)
b3 = Button(root,text = '浏览',bd = 2,width = 5, command = browse_picture).grid(row = 1,column=1,sticky=E)
b4 = Button(root,text = '浏览',bd = 2,width = 5, command = browse_save).grid(row = 2,column=1,sticky=E)




root.mainloop()

为了制作出一个和平常使用的感觉差不多的使用方式,还是费了一番功夫,
主要在于保存路径Entry录入框这里

原本的方式 tkinter.filedialog 直接返回了一个包括文件名在内的路径,但保存路径实际上是到一个文件夹的,所以又调用了 os 库,os.path.spli函数对这部分路径进行分割,但是要让文件名不是一个摆设的话,又要想办法加上文件名,最后只好多加了一个名为 tempfilename 的字符串

原本在学习 tkinter 时,是漏掉了 tkinter.filedialog 和 tkinter.messagebox 两个部分的,还想怎么去重新编写两个窗口,警告提示还好,但是文件全路径浏览还真是发了一番愁。

发布了6 篇原创文章 · 获赞 8 · 访问量 1580

猜你喜欢

转载自blog.csdn.net/Listening_Rift/article/details/87868248