zoukankan      html  css  js  c++  java
  • 使用tkinker做python GUI编程的一个案例

    import os
    import re
    import base64

    from tkinter import *
    from tkinter.filedialog import askopenfilename
    from tkinter.messagebox import showinfo

    from PIL import Image

    frameT = Tk()
    frameT.geometry('500x200+400+200')
    frameT.title('选择需要输入处理的文件')
    frame = Frame(frameT)
    frame.pack(padx=10, pady=10) # 设置外边距
    frame_1 = Frame(frameT)
    frame_1.pack(padx=10, pady=10) # 设置外边距
    frame1 = Frame(frameT)
    frame1.pack(padx=10, pady=10)
    v1 = StringVar()
    v2 = StringVar()
    ent = Entry(frame, width=50, textvariable=v1).pack(fill=X, side=LEFT) # x方向填充,靠左
    ent2 = Entry(frame_1, width=50, textvariable=v2).pack(fill=X, side=LEFT) # x方向填充,靠左


    def fileopen():
    file_sql = askopenfilename()
    if file_sql:
    v1.set(file_sql)


    def fileopen_1():
    file_YuD = askopenfilename()
    if file_YuD:
    v2.set(file_YuD)


    #图片转透明处理函数
    def transparent_back(pict_path):
    # 循环遍历remobg文件夹中的所有图片
    for pict in os.listdir(pict_path):
    img_file = os.path.join(pict_path, pict)
    #print(img_file)
    # 执行去除背景色操作
    img = Image.open(img_file)
    img = img.convert('RGBA')
    #img.show()
    pixdata = img.load()
    for y in range(img.size[1]):
    for x in range(img.size[0]):
    if pixdata[x, y][0] > 225 and pixdata[x, y][1] > 225 and pixdata[x, y][2] > 225 and pixdata[x, y][3] > 225:
    pixdata[x, y] = (255, 255, 255, 0)
    # 重命名
    name = img_file.split('.')
    #os.rename(os.path.join(pict_path, name[0] + ".png")
    img.save(name[0] + ".png")

    print("%s is done" % img_file)

    # 保存结果到txt
    def save_parse_result(content):
    pathfile = v2.get()
    print('****************************')
    #print(path)
    f = open(pathfile, 'a+', encoding='utf-8')
    f.write(content + ' ')
    f.close()


    #图片转base64
    def pic_to_base64(pict_path):
    # 循环遍历remobg文件夹中的所有图片
    for pict in os.listdir(pict_path):
    back_file = os.path.join(pict_path, pict)
    with open(back_file, 'rb') as fp: # 二进制方式打开图文件
    fpBase64 = base64.b64encode(fp.read()) # 读取文件内容,转换为base64编码
    content = '{} , base64:{}'.format(back_file, fpBase64)
    print(content)
    save_parse_result(content)



    def match():
    #调运行函数
    pict_path = v1.get()
    #print(pict_path)
    transparent_back(pict_path)
    pic_to_base64(pict_path)
    #print(v1.get(), v2.get())
    pass


    btn = Button(frame, width=20, text='图片路径', font=("宋体", 14), command=fileopen).pack(fil=X, padx=10)
    btn_1 = Button(frame_1, width=20, text='结果文件', font=("宋体", 14), command=fileopen_1).pack(fil=X, padx=10)
    ext = Button(frame1, width=10, text='运行', font=("宋体", 14), command=match).pack(fill=X, side=LEFT)
    etb = Button(frame1, width=10, text='退出', font=("宋体", 14), command=frameT.quit).pack(fill=Y, padx=10)
    frameT.mainloop()

    本文来自博客园,作者:ReluStarry,转载请注明原文链接:https://www.cnblogs.com/relustarry/p/14360206.html

  • 相关阅读:
    Socket 的网络编程
    《Python 3.5从零开始学》笔记-第8章 面向对象编程
    Python 的8个关键要素
    分布式发布订阅模型网络的实现有哪些
    MongoDB知识整理
    C++模板类与Qt信号槽混用
    C++中 =default,=delete用法
    QT知识整理
    Python题整理
    STL库的应用
  • 原文地址:https://www.cnblogs.com/relustarry/p/14360206.html
Copyright © 2011-2022 走看看