用python3制作实用的改图软件,方便自己以后对图片进行修改,这次代码量相较以往较多,读者有不懂的可以私信博主或者在下方进行评论,博主会在第一时间进行答复的,软件效果图如下:
废话不多说,直接上代码,首先导入相关的模块:
from tkinter import *
from tkinter import scrolledtext
import tkinter.filedialog
from PIL import Image
import threading
第一个界面的主函数:
def get_xuan():
global data
# 使用文件对话框选择文件
# filedialog.askopenfilenames可以返回多个文件名
data = tkinter.filedialog.askopenfilenames(title = "选择文件")
# print(type(data),data)
tmp = []
for i in data:
tmp.append(i)
# print(tmp , type(tmp))
# exit()
# qian = "选择的文件有:" + "\n"
# 返回通过指定字符连接序列中元素后生成的新字符串。
file = '\n'.join(tmp)
global file_xian
file_xian = file.replace('/' , r'\\')
# 图片文件名
# 下载的文件名
global filename
filename = file.rpartition('/')[-1]
# print(file_xian , type(file_xian))
# print(filename)
# 待处理图片存储路径
im = Image.open(file_xian)
# Resize图片大小,入口参数为一个tuple,新的图片大小
imBackground = im.resize((700, 465))
# 处理后的图片的存储路径,以及存储格式
name = 'z_1.gif'
imBackground.save(name, 'gif')
global pic_1
pic_1 = PhotoImage(file='z_1.gif')
lable14 = Label(window, image=pic_1)
lable14.place(x=62, y=0)
def thread_it(func):
'''将函数打包进线程'''
# 创建
t = threading.Thread(target=func)
# 守护 !!!
t.setDaemon(True)
# 启动
t.start()
# 阻塞--卡死界面!
# t.join()
第一个界面的GUI界面布局:
window = Tk()
# 设置标题
window.title('图片修改工具')
# 窗口的位置和大小
window.geometry('800x600+400+80')
# 设置窗口是否可以变化长宽,默认可变
window.resizable(width=False, height=False)
window.config(bg = "#2F4F4F")
# pic = PhotoImage(file='logo.gif')
# lable14 = Label(window, image=pic)
# lable14.place(x=5, y=0)
lable1 = Label(window, text=' 图片展示区', font=('微软雅黑', 60), fg='black' , bg = '#23238E')
lable1.place(x=200, y=180)
for i in range(9):
lable2 = Label(window, text='|', font=('微软雅黑', 30), fg='black' , bg = '#2F4F4F')
lable2.place(x=50, y= i * 50)
for j in range(14):
lable3 = Label(window, text='—', font=('微软雅黑', 30), fg='black' , bg = '#2F4F4F')
lable3.place(x=65 + j * 50, y=440)
for i in range(9):
lable4 = Label(window, text='|', font=('微软雅黑', 30), fg='black' , bg = '#2F4F4F')
lable4.place(x=760, y= i * 50)
button_0=Button(window,text="选择图片", font=('微软雅黑', 25),bg = '#D19275' , command = lambda: thread_it(get_xuan))
button_0.place(x=30,y = 500)
button_1=Button(window,text="修改图片大小和格式", font=('微软雅黑', 25),bg = '#D19275' , command = get_size)
button_1.place(x=250,y = 500)
# button_2=Button(window,text="修改格式", font=('微软雅黑', 25),bg = '#D19275')
# button_2.place(x=430,y = 500,width = 150)
button_3=Button(window,text="退出", font=('微软雅黑', 25),bg = '#D19275' , command = window.quit)
button_3.place(x=630,y = 500,width = 150)
window.mainloop()
第二个界面的主函数:
def get_size():
# 获取修改图片的地址
global filename_1
global file_xian_1
file_xian_1 = file_xian
filename_1 = filename
# print(file_xian_1 , filename_1)
# window.destroy()
# 常用选项的函数
def get_chang_1():
# print(file_xian)
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 295)
entry_2.insert(0 , 413)
def get_chang_2():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 260)
entry_2.insert(0 , 378)
def get_chang_3():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 390)
entry_2.insert(0 , 567)
def get_chang_4():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 413)
entry_2.insert(0 , 579)
def get_chang_5():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 413)
entry_2.insert(0 , 531)
def get_chang_6():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 413)
entry_2.insert(0 , 626)
def get_chang_7():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 200)
entry_2.insert(0 , 200)
def get_chang_8():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 960)
entry_2.insert(0 , 960)
# 公务员选项
def get_gong_1():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 413)
entry_2.insert(0 , 531)
def get_gong_2():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 168)
entry_2.insert(0 , 218)
def get_gong_3():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 100)
entry_2.insert(0 , 140)
def get_gong_4():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 99)
entry_2.insert(0 , 128)
# 职业资格选项
def get_zhi_1():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 114)
entry_2.insert(0 , 156)
def get_zhi_2():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 160)
entry_2.insert(0 , 210)
def get_zhi_3():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 100)
entry_2.insert(0 , 140)
def get_zhi_4():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 413)
entry_2.insert(0 , 626)
# 考试选项
def get_kao_1():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 114)
entry_2.insert(0 , 192)
def get_kao_2():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 240)
entry_2.insert(0 , 320)
def get_kao_3():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 144)
entry_2.insert(0 , 192)
def get_kao_4():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 360)
entry_2.insert(0 , 480)
# 其他选项
def get_qi_1():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 114)
entry_2.insert(0 , 156)
# 指定格式选项
def get_ding_1():
entry_1.delete(0, END)
entry_2.delete(0, END)
# 选择图片格式
def get_choose_1():
global format
format = "JPEG"
def get_choose_2():
global format
format = "png"
def get_choose_3():
global format
format = "gif"
# def get_lu():
# # 使用文件对话框选择文件
# # filedialog.askopenfilenames可以返回多个文件名
# data_1 = tkinter.filedialog.askdirectory(title="选择文件路径")
# data = data_1.replace('/', r'\\')
# # print(type(data),data)
# # exit()
# entry_3.delete(0, END)
# entry_3.insert(0, data)
def get_lu():
if format == "JPEG":
data_1 = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('jpg 文件', '*.jpg'), ('所有文件', '*.*')))
if format == "png":
data_1 = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('png 文件', '*.png'), ('所有文件', '*.*')))
if format == "gif":
data_1 = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('gif 文件', '*.gif'), ('所有文件', '*.*')))
data = data_1.replace('/', r'\\')
# print(type(data),data)
# exit()
entry_3.delete(0, END)
entry_3.insert(0, data)
# 进行图片的修改和转格式
def get_suan():
# print(format , type(format))
# 待处理图片存储路径
im = Image.open(file_xian_1)
# if im.mode == "P":
im = im.convert('RGB')
# Resize图片大小,入口参数为一个tuple,新的图片大小
imBackground = im.resize( ( int(entry_1.get()), int(entry_2.get()) ) )
# 处理后的图片的存储路径,以及存储格式
if format == "JPEG":
# name = entry_3.get() + r"\\" + '修改图.jpg'
# print(name)
# exit()
# name = '修改图.jpg'
name = entry_3.get()
imBackground.save(name, format)
elif format == "png":
# name = entry_3.get() + r"\\" + '修改图.png'
# name = '修改图.png'
name = entry_3.get()
imBackground.save(name, format)
elif format == "gif":
# name = entry_3.get() + r"\\" + '修改图.gif'
# name = '修改图.gif'
name = entry_3.get()
imBackground.save(name, format)
第二个界面的GUI界面设计:
root = Tk()
# 设置标题
root.title('图片修改大小和格式')
# 窗口的位置和大小
root.geometry('500x400+600+150')
# 设置窗口是否可以变化长宽,默认可变
root.resizable(width=False, height=False)
root.config(bg="#C0D9D9")
lable1_1 = Label(root ,text=' 选择相应的尺寸:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_1.place(x=150, y=10)
lable1_2 = Label(root ,text=' 宽:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_2.place(x=20, y=245)
lable1_3 = Label(root ,text=' 高:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_3.place(x=280, y=245)
lable1_4 = Label(root ,text='像素', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_4.place(x=180, y=245)
lable1_5 = Label(root ,text='像素', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_5.place(x=430, y=245)
lable1_6 = Label(root ,text='保存格式:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_6.place(x=20, y=200)
lable1_7 = Label(root ,text='保存路径:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_7.place(x=10, y=300)
# 常用选项
menubutton_1 = Menubutton(root,text='常用',relief=SOLID, font=('微软雅黑', 25),bg = '#D19275')
menubutton_1.place(x = 10 , y = 60)
value_1 = IntVar()
# value_1.set(1)
file_menu_1 = Menu(menubutton_1, tearoff=False)
file_menu_1.add_radiobutton(label='一寸(295×413)', variable=value_1, value=1 , command = get_chang_1)
file_menu_1.add_radiobutton(label='小一寸(260×378)', variable=value_1, value=2, command = get_chang_2)
file_menu_1.add_radiobutton(label='大一寸(390×567)', variable=value_1, value=3, command = get_chang_3)
file_menu_1.add_radiobutton(label='二寸(413×579)', variable=value_1, value=4, command = get_chang_4)
file_menu_1.add_radiobutton(label='小二寸(413×531)', variable=value_1, value=5, command = get_chang_5)
file_menu_1.add_radiobutton(label='二寸(413×626)', variable=value_1, value=6, command = get_chang_6)
file_menu_1.add_radiobutton(label='正方形(200×200)', variable=value_1, value=7, command = get_chang_7)
file_menu_1.add_radiobutton(label='朋友圈背景(960×960)', variable=value_1, value=8, command = get_chang_8)
menubutton_1.config(menu=file_menu_1)
# 公务员选项
menubutton_2 = Menubutton(root,text='公务员',relief=SOLID, font=('微软雅黑', 25),bg = '#D19275')
menubutton_2.place(x = 150 , y = 60)
value_2 = IntVar()
file_menu_2 = Menu(menubutton_2, tearoff=False)
file_menu_2.add_radiobutton(label='413 × 531像素', variable=value_2, value=1 , command = get_gong_1)
file_menu_2.add_radiobutton(label='168 × 218像素', variable=value_2, value=2 , command = get_gong_2)
file_menu_2.add_radiobutton(label='100 × 140像素', variable=value_2, value=3 , command = get_gong_3)
file_menu_2.add_radiobutton(label='99 × 128像素', variable=value_2, value=4 , command = get_gong_4)
menubutton_2.config(menu=file_menu_2)
# 职业资格选项
menubutton_3 = Menubutton(root, text='职业资格', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
menubutton_3.place(x=330, y=60)
value_3 = IntVar()
file_menu_3 = Menu(menubutton_3, tearoff=False)
file_menu_3.add_radiobutton(label='会计(114 × 156)', variable=value_3, value=1 , command = get_zhi_1)
file_menu_3.add_radiobutton(label='护士(160 × 210)', variable=value_3, value=2 , command = get_zhi_2)
file_menu_3.add_radiobutton(label='建造师(100 × 140)', variable=value_3, value=3 , command = get_zhi_3)
file_menu_3.add_radiobutton(label='司法考试(413 × 626)', variable=value_3, value=4 , command = get_zhi_4)
menubutton_3.config(menu=file_menu_3)
# 考试选项
menubutton_4 = Menubutton(root, text='考试', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
menubutton_4.place(x=10, y=130)
value_4 = IntVar()
file_menu_4 = Menu(menubutton_4, tearoff=False)
file_menu_4.add_radiobutton(label='计算机等级(114 × 192)', variable=value_4, value=1 ,command = get_kao_1)
file_menu_4.add_radiobutton(label='英语四六级(240 × 320)', variable=value_4, value=2 ,command = get_kao_2)
file_menu_4.add_radiobutton(label='英语四六级(144 × 192)', variable=value_4, value=3 ,command = get_kao_3)
file_menu_4.add_radiobutton(label='日语能力测试(360 × 480)', variable=value_4, value=4 ,command = get_kao_4)
menubutton_4.config(menu=file_menu_4)
# 其他选项
menubutton_5 = Menubutton(root, text='其他', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
menubutton_5.place(x=150, y=130)
value_5 = IntVar()
file_menu_5 = Menu(menubutton_5, tearoff=False)
file_menu_5.add_radiobutton(label='社保证(114 × 156)', variable=value_5, value=1 , command = get_qi_1)
menubutton_5.config(menu=file_menu_5)
# 指定尺寸选项
menubutton_6 = Menubutton(root, text='指定尺寸', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
menubutton_6.place(x=330, y=130)
value_6 = IntVar()
file_menu_6 = Menu(menubutton_6, tearoff=False)
file_menu_6.add_radiobutton(label='指定尺寸', variable=value_6, value=1 , command = get_ding_1)
menubutton_6.config(menu=file_menu_6)
button_4 = Button(root, text="确定修改", font=('微软雅黑', 15), bg='#D19275',width = 8 , command = get_suan)
button_4.place(x=80, y=350)
button_5 = Button(root, text="退出", font=('微软雅黑', 15), bg='#D19275',width = 8 ,command=root.quit)
button_5.place(x=300, y=350)
# 图片格式选择按钮
s = IntVar()
s.set(1)
button_6 = Radiobutton(root, text='jpg', font=("隶书", 15), bg='#C0D9D9', variable=s, activeforeground='gold',
activebackground='green', value=1 , command = get_choose_1)
button_6.place(x=150, y=205)
button_7 = Radiobutton(root, text='png', font=("隶书", 15), bg='#C0D9D9', variable=s, activeforeground='gold',
activebackground='green', value=2 , command = get_choose_2)
button_7.place(x=250, y=205)
button_8 = Radiobutton(root, text='gif', font=("隶书", 15), bg='#C0D9D9', variable=s, activeforeground='gold',
activebackground='green', value=3 , command = get_choose_3)
button_8.place(x=350, y=205)
button_9 = Button(root, text=". . .", font=('微软雅黑', 11), bg='white',width = 3 ,height = 1,command=get_lu)
button_9.place(x=460, y=307)
# 两个像素填写框
entry_1 = Entry(root, font=('微软雅黑', 20), width=5, bg='white')
entry_1.place(x=80, y=250)
entry_2 = Entry(root, font=('微软雅黑', 20), width=5, bg='white')
entry_2.place(x=340, y=250)
# 路径填写框
entry_3 = Entry(root, font=('微软雅黑', 15), width=27, bg='white')
entry_3.place(x=135, y=307)
root.mainloop()
结合起来,整体代码如下:
from tkinter import *
from tkinter import scrolledtext
import tkinter.filedialog
from PIL import Image
import threading
def get_xuan():
global data
# 使用文件对话框选择文件
# filedialog.askopenfilenames可以返回多个文件名
data = tkinter.filedialog.askopenfilenames(title = "选择文件")
# print(type(data),data)
tmp = []
for i in data:
tmp.append(i)
# print(tmp , type(tmp))
# exit()
# qian = "选择的文件有:" + "\n"
# 返回通过指定字符连接序列中元素后生成的新字符串。
file = '\n'.join(tmp)
global file_xian
file_xian = file.replace('/' , r'\\')
# 图片文件名
# 下载的文件名
global filename
filename = file.rpartition('/')[-1]
# print(file_xian , type(file_xian))
# print(filename)
# 待处理图片存储路径
im = Image.open(file_xian)
# Resize图片大小,入口参数为一个tuple,新的图片大小
imBackground = im.resize((700, 465))
# 处理后的图片的存储路径,以及存储格式
name = 'z_1.gif'
imBackground.save(name, 'gif')
global pic_1
pic_1 = PhotoImage(file='z_1.gif')
lable14 = Label(window, image=pic_1)
lable14.place(x=62, y=0)
def get_size():
# 获取修改图片的地址
global filename_1
global file_xian_1
file_xian_1 = file_xian
filename_1 = filename
# print(file_xian_1 , filename_1)
# window.destroy()
# 常用选项的函数
def get_chang_1():
# print(file_xian)
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 295)
entry_2.insert(0 , 413)
def get_chang_2():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 260)
entry_2.insert(0 , 378)
def get_chang_3():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 390)
entry_2.insert(0 , 567)
def get_chang_4():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 413)
entry_2.insert(0 , 579)
def get_chang_5():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 413)
entry_2.insert(0 , 531)
def get_chang_6():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 413)
entry_2.insert(0 , 626)
def get_chang_7():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 200)
entry_2.insert(0 , 200)
def get_chang_8():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 960)
entry_2.insert(0 , 960)
# 公务员选项
def get_gong_1():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 413)
entry_2.insert(0 , 531)
def get_gong_2():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 168)
entry_2.insert(0 , 218)
def get_gong_3():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 100)
entry_2.insert(0 , 140)
def get_gong_4():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 99)
entry_2.insert(0 , 128)
# 职业资格选项
def get_zhi_1():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 114)
entry_2.insert(0 , 156)
def get_zhi_2():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 160)
entry_2.insert(0 , 210)
def get_zhi_3():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 100)
entry_2.insert(0 , 140)
def get_zhi_4():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 413)
entry_2.insert(0 , 626)
# 考试选项
def get_kao_1():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 114)
entry_2.insert(0 , 192)
def get_kao_2():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 240)
entry_2.insert(0 , 320)
def get_kao_3():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 144)
entry_2.insert(0 , 192)
def get_kao_4():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 360)
entry_2.insert(0 , 480)
# 其他选项
def get_qi_1():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_1.insert(0 , 114)
entry_2.insert(0 , 156)
# 指定格式选项
def get_ding_1():
entry_1.delete(0, END)
entry_2.delete(0, END)
# 选择图片格式
def get_choose_1():
global format
format = "JPEG"
def get_choose_2():
global format
format = "png"
def get_choose_3():
global format
format = "gif"
# def get_lu():
# # 使用文件对话框选择文件
# # filedialog.askopenfilenames可以返回多个文件名
# data_1 = tkinter.filedialog.askdirectory(title="选择文件路径")
# data = data_1.replace('/', r'\\')
# # print(type(data),data)
# # exit()
# entry_3.delete(0, END)
# entry_3.insert(0, data)
def get_lu():
if format == "JPEG":
data_1 = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('jpg 文件', '*.jpg'), ('所有文件', '*.*')))
if format == "png":
data_1 = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('png 文件', '*.png'), ('所有文件', '*.*')))
if format == "gif":
data_1 = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('gif 文件', '*.gif'), ('所有文件', '*.*')))
data = data_1.replace('/', r'\\')
# print(type(data),data)
# exit()
entry_3.delete(0, END)
entry_3.insert(0, data)
# 进行图片的修改和转格式
def get_suan():
# print(format , type(format))
# 待处理图片存储路径
im = Image.open(file_xian_1)
# if im.mode == "P":
im = im.convert('RGB')
# Resize图片大小,入口参数为一个tuple,新的图片大小
imBackground = im.resize( ( int(entry_1.get()), int(entry_2.get()) ) )
# 处理后的图片的存储路径,以及存储格式
if format == "JPEG":
# name = entry_3.get() + r"\\" + '修改图.jpg'
# print(name)
# exit()
# name = '修改图.jpg'
name = entry_3.get()
imBackground.save(name, format)
elif format == "png":
# name = entry_3.get() + r"\\" + '修改图.png'
# name = '修改图.png'
name = entry_3.get()
imBackground.save(name, format)
elif format == "gif":
# name = entry_3.get() + r"\\" + '修改图.gif'
# name = '修改图.gif'
name = entry_3.get()
imBackground.save(name, format)
root = Tk()
# 设置标题
root.title('图片修改大小和格式')
# 窗口的位置和大小
root.geometry('500x400+600+150')
# 设置窗口是否可以变化长宽,默认可变
root.resizable(width=False, height=False)
root.config(bg="#C0D9D9")
lable1_1 = Label(root ,text=' 选择相应的尺寸:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_1.place(x=150, y=10)
lable1_2 = Label(root ,text=' 宽:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_2.place(x=20, y=245)
lable1_3 = Label(root ,text=' 高:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_3.place(x=280, y=245)
lable1_4 = Label(root ,text='像素', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_4.place(x=180, y=245)
lable1_5 = Label(root ,text='像素', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_5.place(x=430, y=245)
lable1_6 = Label(root ,text='保存格式:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_6.place(x=20, y=200)
lable1_7 = Label(root ,text='保存路径:', font=('微软雅黑', 20), fg='black', bg='#C0D9D9')
lable1_7.place(x=10, y=300)
# 常用选项
menubutton_1 = Menubutton(root,text='常用',relief=SOLID, font=('微软雅黑', 25),bg = '#D19275')
menubutton_1.place(x = 10 , y = 60)
value_1 = IntVar()
# value_1.set(1)
file_menu_1 = Menu(menubutton_1, tearoff=False)
file_menu_1.add_radiobutton(label='一寸(295×413)', variable=value_1, value=1 , command = get_chang_1)
file_menu_1.add_radiobutton(label='小一寸(260×378)', variable=value_1, value=2, command = get_chang_2)
file_menu_1.add_radiobutton(label='大一寸(390×567)', variable=value_1, value=3, command = get_chang_3)
file_menu_1.add_radiobutton(label='二寸(413×579)', variable=value_1, value=4, command = get_chang_4)
file_menu_1.add_radiobutton(label='小二寸(413×531)', variable=value_1, value=5, command = get_chang_5)
file_menu_1.add_radiobutton(label='二寸(413×626)', variable=value_1, value=6, command = get_chang_6)
file_menu_1.add_radiobutton(label='正方形(200×200)', variable=value_1, value=7, command = get_chang_7)
file_menu_1.add_radiobutton(label='朋友圈背景(960×960)', variable=value_1, value=8, command = get_chang_8)
menubutton_1.config(menu=file_menu_1)
# 公务员选项
menubutton_2 = Menubutton(root,text='公务员',relief=SOLID, font=('微软雅黑', 25),bg = '#D19275')
menubutton_2.place(x = 150 , y = 60)
value_2 = IntVar()
file_menu_2 = Menu(menubutton_2, tearoff=False)
file_menu_2.add_radiobutton(label='413 × 531像素', variable=value_2, value=1 , command = get_gong_1)
file_menu_2.add_radiobutton(label='168 × 218像素', variable=value_2, value=2 , command = get_gong_2)
file_menu_2.add_radiobutton(label='100 × 140像素', variable=value_2, value=3 , command = get_gong_3)
file_menu_2.add_radiobutton(label='99 × 128像素', variable=value_2, value=4 , command = get_gong_4)
menubutton_2.config(menu=file_menu_2)
# 职业资格选项
menubutton_3 = Menubutton(root, text='职业资格', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
menubutton_3.place(x=330, y=60)
value_3 = IntVar()
file_menu_3 = Menu(menubutton_3, tearoff=False)
file_menu_3.add_radiobutton(label='会计(114 × 156)', variable=value_3, value=1 , command = get_zhi_1)
file_menu_3.add_radiobutton(label='护士(160 × 210)', variable=value_3, value=2 , command = get_zhi_2)
file_menu_3.add_radiobutton(label='建造师(100 × 140)', variable=value_3, value=3 , command = get_zhi_3)
file_menu_3.add_radiobutton(label='司法考试(413 × 626)', variable=value_3, value=4 , command = get_zhi_4)
menubutton_3.config(menu=file_menu_3)
# 考试选项
menubutton_4 = Menubutton(root, text='考试', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
menubutton_4.place(x=10, y=130)
value_4 = IntVar()
file_menu_4 = Menu(menubutton_4, tearoff=False)
file_menu_4.add_radiobutton(label='计算机等级(114 × 192)', variable=value_4, value=1 ,command = get_kao_1)
file_menu_4.add_radiobutton(label='英语四六级(240 × 320)', variable=value_4, value=2 ,command = get_kao_2)
file_menu_4.add_radiobutton(label='英语四六级(144 × 192)', variable=value_4, value=3 ,command = get_kao_3)
file_menu_4.add_radiobutton(label='日语能力测试(360 × 480)', variable=value_4, value=4 ,command = get_kao_4)
menubutton_4.config(menu=file_menu_4)
# 其他选项
menubutton_5 = Menubutton(root, text='其他', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
menubutton_5.place(x=150, y=130)
value_5 = IntVar()
file_menu_5 = Menu(menubutton_5, tearoff=False)
file_menu_5.add_radiobutton(label='社保证(114 × 156)', variable=value_5, value=1 , command = get_qi_1)
menubutton_5.config(menu=file_menu_5)
# 指定尺寸选项
menubutton_6 = Menubutton(root, text='指定尺寸', relief=SOLID, font=('微软雅黑', 25), bg='#D19275')
menubutton_6.place(x=330, y=130)
value_6 = IntVar()
file_menu_6 = Menu(menubutton_6, tearoff=False)
file_menu_6.add_radiobutton(label='指定尺寸', variable=value_6, value=1 , command = get_ding_1)
menubutton_6.config(menu=file_menu_6)
button_4 = Button(root, text="确定修改", font=('微软雅黑', 15), bg='#D19275',width = 8 , command = get_suan)
button_4.place(x=80, y=350)
button_5 = Button(root, text="退出", font=('微软雅黑', 15), bg='#D19275',width = 8 ,command=root.quit)
button_5.place(x=300, y=350)
# 图片格式选择按钮
s = IntVar()
s.set(1)
button_6 = Radiobutton(root, text='jpg', font=("隶书", 15), bg='#C0D9D9', variable=s, activeforeground='gold',
activebackground='green', value=1 , command = get_choose_1)
button_6.place(x=150, y=205)
button_7 = Radiobutton(root, text='png', font=("隶书", 15), bg='#C0D9D9', variable=s, activeforeground='gold',
activebackground='green', value=2 , command = get_choose_2)
button_7.place(x=250, y=205)
button_8 = Radiobutton(root, text='gif', font=("隶书", 15), bg='#C0D9D9', variable=s, activeforeground='gold',
activebackground='green', value=3 , command = get_choose_3)
button_8.place(x=350, y=205)
button_9 = Button(root, text=". . .", font=('微软雅黑', 11), bg='white',width = 3 ,height = 1,command=get_lu)
button_9.place(x=460, y=307)
# 两个像素填写框
entry_1 = Entry(root, font=('微软雅黑', 20), width=5, bg='white')
entry_1.place(x=80, y=250)
entry_2 = Entry(root, font=('微软雅黑', 20), width=5, bg='white')
entry_2.place(x=340, y=250)
# 路径填写框
entry_3 = Entry(root, font=('微软雅黑', 15), width=27, bg='white')
entry_3.place(x=135, y=307)
root.mainloop()
def thread_it(func):
'''将函数打包进线程'''
# 创建
t = threading.Thread(target=func)
# 守护 !!!
t.setDaemon(True)
# 启动
t.start()
# 阻塞--卡死界面!
# t.join()
window = Tk()
# 设置标题
window.title('图片修改工具')
# 窗口的位置和大小
window.geometry('800x600+400+80')
# 设置窗口是否可以变化长宽,默认可变
window.resizable(width=False, height=False)
window.config(bg = "#2F4F4F")
# pic = PhotoImage(file='logo.gif')
# lable14 = Label(window, image=pic)
# lable14.place(x=5, y=0)
lable1 = Label(window, text=' 图片展示区', font=('微软雅黑', 60), fg='black' , bg = '#23238E')
lable1.place(x=200, y=180)
for i in range(9):
lable2 = Label(window, text='|', font=('微软雅黑', 30), fg='black' , bg = '#2F4F4F')
lable2.place(x=50, y= i * 50)
for j in range(14):
lable3 = Label(window, text='—', font=('微软雅黑', 30), fg='black' , bg = '#2F4F4F')
lable3.place(x=65 + j * 50, y=440)
for i in range(9):
lable4 = Label(window, text='|', font=('微软雅黑', 30), fg='black' , bg = '#2F4F4F')
lable4.place(x=760, y= i * 50)
button_0=Button(window,text="选择图片", font=('微软雅黑', 25),bg = '#D19275' , command = lambda: thread_it(get_xuan))
button_0.place(x=30,y = 500)
button_1=Button(window,text="修改图片大小和格式", font=('微软雅黑', 25),bg = '#D19275' , command = get_size)
button_1.place(x=250,y = 500)
# button_2=Button(window,text="修改格式", font=('微软雅黑', 25),bg = '#D19275')
# button_2.place(x=430,y = 500,width = 150)
button_3=Button(window,text="退出", font=('微软雅黑', 25),bg = '#D19275' , command = window.quit)
button_3.place(x=630,y = 500,width = 150)
window.mainloop()
代码到这里就结束了,这次代码量比较多,读者有不懂的地方可以私信博主或在下方进行评论,博主会在第一时间进行答复,我是活动的笑脸。