以下是我的代码(下面有诸多缺陷、BUG,我还没小学毕业编程是自学,有些信息都是穿插式的,比较凌乱,勿怪)
import tkinter
import pyperclip
import subprocess
import os
import tkinter.messagebox
# import cv2
import sys
from PyQt4 import QtGui, Qt, QtCore
import tkinter.filedialog
import chardet
from PIL import Image, ImageTk
file_path=''
info='''如果你的运行此代码的文件夹有名为mi.txt的文件,除非你运行过了此代码,否则就移到其他地方,
否则会读取错文本。你可以就一个文件,不用配置任何东西,直接运行,它会自动创建一个叫mi.txt
的文件,不要删,否则数据会归零。在运行时,点击了“获取密钥”,然后不用干任何事,在输入密钥
的框里Ctrl+V粘贴上去就可以,然后再将要解码/加密的写入/复制到对应的大输入框里,点击“点击
加密”/“点击解密”,在你输入的框里就会出现相应的加密/解密后的文本。有时候你点击了“点击加
密”/“点击解密”后大你输入的输入框内一片空白,照样复制,因为那不是没有,而是没显示出来。
如果vbs闪退,那么请手动查看mi.txt中数字是否是您输入的数字+1,如果不是,请再次尝试数据定
值或经行手动改动mi.txt!如果您按下了只读那么他就不会再回到编辑模式,除非您再一次进入数据
定值。请写上后缀名,否则没法读取。功能有差,非常抱歉!
2022.05.13 16:37 源于作者:王俞励'''
show_text_ft=False
tf=False
name_of_en=''
name_of_de=''
is_close_warn=True
do_not_say_again=False
state_text=False
input_text=''
input_text2=''
# file_path_encoding='utf-8'
# lista=[]
def submit_password():
if username.get() == 'admin' and password.get() == 'decodelib_user' or \
username.get() == 'admin2' and password.get() == 'decodelib_writer':
tkinter.messagebox.showinfo(title='输入密钥结果',message='成功!你现在可以用此代码了!')
lista.append('do')
else:
tkinter.messagebox.showerror(title='输入密钥结果',message='你没有权限使用此代码,因为你的用户名或(和)密钥不对应。')
lista.append('do not')
# root=tkinter.Tk()
# root.title('DECODE密码输入')
# root.minsize(260,175)
# tkinter.Label(root,text='请输入开启此文件所需的用户名:').grid(row=1,column=0)
# username=tkinter.Entry(root,width=30)
# username.grid(row=2, column=0, columnspan=4, padx=5, pady=5, sticky=tkinter.W)
# tkinter.Label(root,text='请输入开启此文件所需的密钥:').grid(row=3,column=0)
# password=tkinter.Entry(root,width=30,show='●')
# password.grid(row=4, column=0, columnspan=4, padx=5, pady=5, sticky=tkinter.W)
# but = tkinter.Button(root, text="确定", width=35, command=lambda:password.bind('<KeyRelease>',submit_password()))
# but2= tkinter.Button(root, text='关闭(如果你已经成功,那即将进入)',width=35, command=root.destroy)
# but2.grid(row=6,column=0)
# but.grid(row=5,column=0)
# root.mainloop()
lista=['do']
if len(lista) != 0:
if lista[-1] == 'do':
tk=tkinter.Tk()
tk.minsize(890,890)
tk.title('加密与解密')
tk.iconphoto(True, tkinter.PhotoImage(file='EL.png'))
try:
with open("mi.txt",'r') as file_object:
mi=file_object.read()
except:
mi=111111
#加密
isencry=False #为了防止点击多次加密出现问题
#加密算法,参数:秘钥,文本
def read_only(var,entry):
if var:
# 以灰阶显示复选框,表示暂时无法使用
entry.config(state=tkinter.DISABLED)
else:
entry.config(state=tkinter.NORMAL)
# def q1(entry):
# with open("mi.txt",'w') as file:
# file.write(str(entry.widget.get()))
# # root.destroy()
def on_change(entry):
# 打印输入信息
with open("mi.txt",'w') as file:
file.write(entry.get())
with open("mi.txt",'r') as file_object:
con=file_object.read()
if con == entry.get() and after_control_c:
# subprocess.call('cscript great_defined.vbs')
tkinter.messagebox.showinfo(title='数据重定值状态', message='数据重定值成功!')
else:
# subprocess.call('cscript not_great.vbs')
tkinter.messagebox.showerror(title='数据重定值状态', message='数据重定值失败,请重试')
os.system("cls")
# Calling on_change when you press the return key
# get()必须绑定在一个事件中,这里使用的回车键
# e.bind("<Return>", on_change)
# root.destroy()
# 创建主窗口
# row=0 建立Entry文本框
def resize(w, h, w_box, h_box, pil_image):
"""
resize a pil_image object so it will fit into
a box of size w_box times h_box, but retain aspect ratio
对一个pil_image对象进行缩放,让它在一个矩形框内,还能保持比例
"""
f1 = 1.0 * w_box / w # 1.0 forces float division in Python2
f2 = 1.0 * h_box / h
factor = min([f1, f2])
# print(f1, f2, factor) # test
# use best down-sizing filter
width = int(w * factor)
height = int(h * factor)
return pil_image.resize((width, height), Image.ANTIALIAS)
# 导入一些包
# opencv2 是 三方库 需要 pip install python-opencv
def show_video():
tkinter.messagebox.showwarning(title='视频版本声明',message='此视频是上一版的,但是我各部分文本已经写\n的很详细了,大部分重要的信息都有,其他的\n自行理解应该没问题。')#如果视频更新了的话就要改掉了
video_path = 'show_function.mp4' # 视频的路径
win = tkinter.Toplevel() # 创建窗口
win.minsize(1000, 700)
Label_movie = tkinter.Label(win) # 创建一个Label,用来安置后面的视频的帧
Label_movie.place(relheight=1, relwidth=1, x=1, y=1) # 全屏放置,
video = cv2.VideoCapture(video_path) # 将视频读取,并将其创建为一个cv对象
while video.isOpened(): # 如果被打开
result, movieFrame = video.read() # 读取视频对象的信息 result 代表视频还有没有帧数,如果有,那么True,否则反之,第二个是帧的图片序列
if result: # 如果视频没播完
image_cv = Image.fromarray(movieFrame) # 将帧的图片序列转化为图片对象
w, h = image_cv.size
# resize the image so it retains its aspect ration
# but fits into the specified display box
# 缩放图像让它保持比例,同时限制在一个矩形框范围内
pil_image_resized = resize(w, h, 1000, 1000, image_cv)
image_tk = ImageTk.PhotoImage(image=pil_image_resized) # 将图片对象传入tkinter支持的对象
Label_movie.config(image=image_tk) # 将Label的图片参数修改为image_tk
Label_movie.image = image_tk # 同上,如果少了这句话,那么会导致部分的视频闪烁
win.update() # 更新窗口
else: # 如果视频播完了,那么退出循环
break
win.mainloop() # 窗口的循环
def ok():
root = tkinter.Tk()
root.title("数据定值页面")
entry = tkinter.Entry(root, width=30)
entry.pack()
root.minsize(200,155)
root.maxsize(300,200)
entry.grid(row=0, column=0, columnspan=4, padx=5, pady=5, sticky=tkinter.W)
# row=1 建立按钮
butOne = tkinter.Button(root, text="全选", width=16,command=lambda:entry.select_range(0, tkinter.END))
butOne.grid(row=1, column=0, padx=5, pady=5, sticky=tkinter.W)
butTwo = tkinter.Button(root, text="取消全选", width=16,command=entry.select_clear)
butTwo.grid(row=1, column=1, padx=5, pady=5, sticky=tkinter.W)
butThree = tkinter.Button(root, text="删除", width=16,command=lambda:entry.delete(0, tkinter.END))
butThree.grid(row=2, column=0, padx=5, pady=5, sticky=tkinter.W)
butFour = tkinter.Button(root, text="退出", width=16,command=root.destroy)
butFour.grid(row=2, column=1, padx=5, pady=5, sticky=tkinter.W)
butFive = tkinter.Button(root, text="确定", width=35, command=lambda:entry.bind('<KeyRelease>',on_change(entry)))
butFive.place(x=5, y=120)
# row=2 复选框
var = tkinter.BooleanVar()
var.set(False)
cheakReadOnly = tkinter.Checkbutton(root, text="只读", variable=var, command=lambda:read_only(var,entry))
cheakReadOnly.grid(row=0, column=1)
root.mainloop()
def get_info_encoding(file):
return chardet.detect(file.encode())['encoding']
def get_encoding(file):
# 二进制方式读取,获取字节数据,检测类型
with open(file, 'rb') as f:
data = f.read()
return chardet.detect(data)['encoding']
def select_file(answer):
filepath = tkinter.filedialog.askopenfilename() # 选择打开什么文件,返回文件名
error=True
try:
with open(filepath,'r',encoding='utf-8') as file_subject:
word=file_subject.read()
except Exception as e:
if type(e) == FileNotFoundError:
if not var4.get():
tkinter.messagebox.showerror(title='读取文件错误',message='读取文件错误,因为没填文件\n名或者这文件根本不存在!\n错误原因:'+str(e))
elif type(e) == UnicodeDecodeError:
tkinter.messagebox.showerror(title='读取文件错误',message='读取文件错误,因为编码格式\n错误,因为此代码只支持ut\nf-8编码类型。错误原因:\n'+str(e))
error=False
global file_path
file_path=filepath
# word[-1]=word[-1].rstrip()
# word2=word.encode()
if answer == 1 and error:
inputtext.delete(1.0, 'end')
inputtext.insert('insert',word)
elif answer == 0 and error:
inputtext2.delete(1.0, 'end')
inputtext2.insert('insert',word)
elif not error:
if answer == 1 and error:
inputtext.insert('insert', '警告:读取文件错误')
elif answer == 0 and error:
inputtext2.insert('insert', '警告:读取文件错误')
# fileIcons=bytes(str(fileIcon))
app = QtGui.QApplication(sys.argv)
fileInfo = Qt.QFileInfo(filepath)
fileIcon = Qt.QFileIconProvider()
icon = QtGui.QIcon(fileIcon.icon(fileInfo))
return icon
def output_file():
outputFilePath = askdirectory() # 选择目录,返回目录名
outputpath.set(outputFilePath) # 设置变量outputpath的值
# def change_encoding(encoding):
# with open('encoding.txt','w',encoding='utf-8') as f:
# f.write(encoding)
# global file_path_encoding
# file_path_encoding=encoding
def save_file(bools):
if bools:
a='密文'
else:
a='明文'
filenewpath = tkinter.filedialog.asksaveasfilename(defaultextension='.txt',title='另存'+a+'为',
filetypes=[('文本文档','.txt'),
('Word文档','.doc .docx'),
('Python文件','.py .pyi .pyo .py~'),
('C++文件','.cpp'),
('All files','*')]) # 设置保存文件,并返回文件名,指定文件名后缀为.txt
# filenewname.set(filenewpath) # 设置变量filename的值
try:
if bools:
global input_text
with open(filenewpath,'w',encoding='utf-8') as save_object:
save_object.write(input_text)
elif not bools:
global input_text2
with open(filenewpath,'w',encoding='utf-8') as save_object2:
save_object2.write(input_text2)
except Exception as e:
if not var4.get():
tkinter.messagebox.showerror(title='保存文件错误',message='保存文件错误,请查看错误原因后修改。\n错误原因:'+str(e))
def encryption():
global tf
tf=True
global is_close_warn
is_close_warn=True
for i in range(int(code_num1.get())):
key=inputkey.get()
global isencry
text2=''
if 2 < len(key) < 10 and isencry:
text=inputtext.get(1.0,'end')
text2=''
#将key转化成ascii码列表
newkey=[]
for i in key:
newkey.append(ord(i))
ii=0
for i in text:
if ord(i)!=10:
text2=text2+chr(ord(i)+newkey[ii])#关键部分,加密公式
else:
text2=text2+chr(10)
ii=ii+1
if ii>=len(newkey):
ii=0
if var5.get():
inputtext.delete(1.0,'end')
if not var5.get() or not var6.get():
inputtext.delete(1.0,'end')
inputtext.insert('insert',text2.rstrip('\n'))
pass
if var6.get():
show_text.delete(1.0,'end')
show_text.insert('insert',text2.rstrip('\n'))
global input_text
input_text=text2
if not var3.get():
root2 = tkinter.Tk()
root2.title('解密结果')
root2.minsize(400, 400)
text4 = list(text2)
for i in range(len(text4)):
if (i + 1) % 40 == 0:
text4.insert(i, '\n')
text3 = ''
for i in text4:
text3 += i
tkinter.Label(root2, text=' 加密结果').grid(row=1, column=0)
tkinter.Label(root2, text=text3,justify='left').grid(row=2, column=0)
def copy_and(text2):
pyperclip.copy(text2)
if not var2.get():
tkinter.messagebox.showinfo(title='复制结果', message='成功复制密文!')
if var1.get():
global file_path
with open(file_path,'w',encoding='utf-8') as file_sub:
file_sub.write(text2.rstrip())
tkinter.Button(root2, text='复制密文', width=50, command=lambda: copy_and(text2.rstrip('\n'))).place(x=5, y=370)
root2.mainloop()
if var6.get():
label_text.set('以下是加密文本浏览 ')
dont.config(text=label_text)
isencry=False
#修改文本触发
def ismodifytext(*o):
global isencry
isencry=True
# img_gif = tkinter.PhotoImage(file='img_gif.gif')
# label_img = tkinter.Label(tk, image=img_gif)
# label_img.pack()
numIdx = 95 # gif的帧数
# 填充95帧内容到frames
frames = [tkinter.PhotoImage(file='img_gif.gif', format='gif -index %i' %i) for i in range(numIdx)]
def update(idx): # 定时器函数
frame = frames[idx]
idx += 1 # 下一帧的序号:在0,1,2,3,4,5之间循环(共6帧)
label.configure(image=frame) # 显示当前帧的图片
tk.after(25, update, idx % numIdx) # 0.1秒(100毫秒)之后继续执行定时器函数(update)
label = tkinter.Label(tk)
label.place(x=35,y=0)
tk.after(0, update, 0) # 立即启动定时器函数(update)
tkinter.Label(tk,text='欢迎来到《加密与解密程序(V1.0.3)》!',bg='orange').place(x=130,y=20)
tkinter.Label(tk,text='作者:王俞励',bg='orange').place(x=340,y=230)
tkinter.Label(tk,text='----------------------------------------加 密----------------------------------------').place(x=10,y=280)
#设置秘钥
tkinter.Label(tk,text="请输入3-9位的秘钥").place(x=10,y=310)
ik=tkinter.StringVar()
inputkey=tkinter.Entry(tk,textvariable=ik,width=40,show='●')
inputkey.place(x=150,y=310)
#输入要加密的文本
tkinter.Label(tk,text="请输入要加密的文本").place(x=10,y=340+30)
inputtext=tkinter.Text(tk,width=40,height=13)
inputtext.place(x=150,y=340+30)
inputtext.bind('<KeyRelease>',ismodifytext)
#点击加密
tkinter.Button(tk,text='点击加密',width=14,command=encryption).place(x=10,y=478+30)
tkinter.Label(tk,text='加密次数').place(x=10,y=310+30)
code_num1 = tkinter.Entry(tk,width=40)
code_num1.insert('insert','1')
code_num1.place(x=150,y=310+30)
dict={}
# 解密
isdecry=False # 为了防止点击多次解密出现bug
# 解密算法,参数:秘钥,文本
def callback(event):
print("clicked at:", event.x, event.y)
def decrypt():
global tf
tf=True
global is_close_warn
is_close_warn=True
for i in range(int(code_num.get())):
key=inputkey2.get()
global isdecry
text2=''
if 2 < len(key) < 10 and isdecry:
text=inputtext2.get(1.0,'end')
# 将key转化成ascii码列表
text2 = ''
newkey=[]
for i in key:
newkey.append(ord(i))
ii=0
for i in text:
if ord(i)!=10:
text2=text2+chr(ord(i)-newkey[ii])# 关键部分,解密公式
else:
text2=text2+chr(10)
ii=ii+1
if ii>=len(newkey):
ii=0
dict['text2']=text2
if var5.get():
inputtext2.delete(1.0,'end')
if not var6.get() or not var5.get():
inputtext2.delete(1.0,'end')
inputtext2.insert('end',text2.rstrip('\n'))
pass
if var6.get():
show_text.delete(1.0,'end')
show_text.insert(1.0,text2.rstrip('\n'))
global input_text2
input_text2=text2
if not var3.get():
root2=tkinter.Tk()
root2.title('解密结果')
root2.minsize(400,400)
text4=list(text2)
for i in range(len(text4)):
if (i+1) % 40 == 0:
text4.insert(i,'\n')
text3=''
for i in text4:
text3+=i
tkinter.Label(root2,text=' 解密结果').grid(row=1,column=0)
tkinter.Label(root2,text=text3,anchor='w').grid(row=2,column=0)
def copy_and(text2):
pyperclip.copy(text2)
if not var2.get():
if pyperclip.paste() == text2:
tkinter.messagebox.showinfo(title='复制结果',message='成功复制明文!')
else:
tkinter.messagebox.showerror(title='复制结果',message='复制明文失败。')
if var1.get():
global file_path
with open(file_path,'w',encoding=get_encoding(file_path)) as file_sub:
file_sub.write(text2)
tkinter.Button(root2,text='复制明文',width=50,command=lambda:copy_and(text2.rstrip('\n'))).place(x=5,y=370)
root2.mainloop()
if var6.get():
label_text.set('以下是解密文本浏览 ')
dont.config(text=label_text)
isdecry=False
#修改文本触发
def ismodify2(*o):
global isdecry
isdecry=True
def get_mi(ft):
try:
with open("mi.txt",'r',encoding='utf-8') as file2:
file3=file2.read()
except:
file3=111111
with open("mi.txt",'w',encoding='utf-8') as file4:
file4.write('111111')
pyperclip.copy(str(file3))
if not ft and pyperclip.paste() == file3:
tkinter.messagebox.showinfo(title='复制密钥结果',message='复制密钥成功!')
def show_help():
tk2=tkinter.Tk()
tkinter.Label(tk2,text=' 使用代码须知').grid(row=1,column=0)
tkinter.Label(tk2,text=info).grid(row=2,column=0)
def zero():
with open('mi.txt','w') as file5:
file5.write('111111')
# subprocess.call('cscript great.vbs')
if var2.get():
tkinter.messagebox.showinfo(title='数据清零状态', message='数据清零成功!')
os.system("cls")
tkinter.Label(tk,text='----------------------------------------解 密----------------------------------------').place(x=10,y=530+30)
#设置秘钥
tkinter.Label(tk,text="请输入3-9位的秘钥").place(x=10,y=560+30)
ik2=tkinter.StringVar()
inputkey2=tkinter.Entry(tk,textvariable=ik2,width=40,show='●')
inputkey2.place(x=150,y=560+30)
#输入要解密的文本
tkinter.Label(tk,text="请输入要解密的文本").place(x=10,y=590+60)
inputtext2=tkinter.Text(tk,width=40,height=16)
inputtext2.place(x=150,y=590+60)
inputtext2.bind('<KeyRelease>',ismodify2)
# if inputtext2 != '.!text2':
# dict['text2']=inputtext2
# else:
# dict['text2']=' '
#点击解密
tkinter.Button(tk,text='点击解密',width=14,command=decrypt).place(x=10,y=610+60)# 10,448
# inputtext2.delete(1.0,'end')
# inputtext2.insert('insert',dict['text2'])
# def text_ss():
# if show_text.get() == '':
# copys.config(state=tkinter.DISABLED)
# else:
# copys.config(state=tkinter.NORMAL)
def fu():
pyperclip.copy(show_text.get(1.0,'end'))
if pyperclip.paste() == show_text.get(1.0,'end'):
if not var2.get():
tkinter.messagebox.showinfo(title='复制文本状态',message='复制文本成功!')
else:
tkinter.messagebox.showerror(title='复制文本状态',message='复制文本失败。')
def res():
global show_text_ft
show_text_ft=True
def fuzhi_ft():
global tf
if tf:
fuzhi.config(state=tkinter.NORMAL)
else:
fuzhi.config(state=tkinter.DISABLED)
tkinter.Button(tk,text='获取帮助',width=14,command=lambda:show_help).place(x=10,y=640+60) # 175,448;CE80,448
tkinter.Button(tk,text='获取密钥',width=14,command=lambda:get_mi(var2.get())).place(x=10,y=670+60) # 350,448;CE150,448
tkinter.Button(tk,text='获取密钥',width=14,command=lambda:get_mi(var2.get())).place(x=10,y=447+30)
tkinter.Button(tk,text='数据重置',width=14,command=zero).place(x=10,y=700+60)
tkinter.Button(tk,text='数据定值',width=14,command=ok).place(x=10,y=730+60)
# tkinter.Button(tk,text='视频展示(有些变色)',width=14,command=show_video).place(x=10,y=447)
select=tkinter.Button(tk,text='选择文件',width=14,command=lambda:select_file(1))
select.place(x=10,y=417)
select2=tkinter.Button(tk,text='选择文件',width=14,command=lambda:select_file(0))
select2.place(x=10,y=760+60)
tkinter.Button(tk,text='保存明文',width=14,command=lambda:save_file(False)).place(x=10,y=790+60)
tkinter.Button(tk,text='保存密文',width=14,command=lambda:save_file(True)).place(x=10,y=417-30)
try:
tkinter.Label(tk,text=file_path,image=select,compound='right').place(x=450,y=860)
except:
tkinter.Label(tk,text='*未选择加密文件').place(x=450,y=860)
try:
tkinter.Label(tk,text=file_path,image=select2,compound='right').place(x=650,y=860)
except:
tkinter.Label(tk,text='*未选择解密文件').place(x=650,y=860)
# tkinter.
# canvas = tkinter.Canvas(tk, width=1, height=1, bg="white")
label_text=tkinter.StringVar()
label_text.set('现在还未加密/解密,做完即可在下方看到加密/解密后的文本 ')
def do_not():
global do_not_say_again,is_close_warn
is_close_warn=False
do_not_say_again=True
def two():
global is_close_warn
is_close_warn=False
sub=62
def handler_adaptor(fun, **kwds):
return lambda event, func=fun, kwds=kwds: fun(event, **kwds)
def moved(event, i, color):
i.config(fg=color)
if is_close_warn or not do_not_say_again:
sub=60
tkinter.Button(tk,text=' ×',bg='#FFF68F',relief=tkinter.FLAT,command=lambda:two).place(x=830,y=0)
tkinter.Label(tk,pady=4,textvariable=label_text,bg='#FFF68F').place(x=441,y=0)
dont=tkinter.Button(tk,text='不再提醒',bg='#FFF68F',relief=tkinter.FLAT,fg='blue',
font=('微软雅黑',8,'underline'),command=lambda:do_not)
dont.place(x=800,y=0)
x = dont.cget("bg")
dont.bind("<Enter>", handler_adaptor(moved, i=dont, color="red"))
# 当鼠标移出控件时,执行moved操作,恢复颜色
dont.bind("<Leave>", handler_adaptor(moved, i=dont, color='blue'))
# canvas.create_rectangle(441, 0, 890, 32, fill='#FFF68F', outline='#FFF68F')
# canvas.pack()
texts=tkinter.StringVar()
show_text=tkinter.Text(tk,width=60,height=sub)
if is_close_warn:
xy={'x':441,'y':30}
elif not is_close_warn:
xy={'x':441,'y':0}
show_text.place(x=xy['x'],y=xy['y'])
# show_text.bind('<KeyRelease>',res)
scroll = tkinter.Scrollbar()
scroll.place(x=870,y=32)
scroll.config(command=show_text.yview)
show_text.config(yscrollcommand=scroll.set)
fuzhi=tkinter.Button(tk, text='复制结果', width=14,command=lambda:fu)
fuzhi.place(x=750,y=813)
# fuzhi_ft()
var1 = tkinter.BooleanVar()
var1.set(False)
check = tkinter.Checkbutton(tk, text="使用文件加密/解密时将加密/解密后的文本替换至选择的文件", variable=var1, bg='orange')
check.place(x=50,y=253)
var2 = tkinter.BooleanVar()
var2.set(False)
checks = tkinter.Checkbutton(tk, text="复制加密/解密后的文本和密钥时不显示提示", variable=var2, bg='orange')
checks.place(x=50, y=223)
var3 = tkinter.BooleanVar()
var3.set(False)
checks2 = tkinter.Checkbutton(tk, text="加密/解密后不显示“加密/解密结果”弹窗", variable=var3, bg='orange')
checks2.place(x=50, y=193)
var4 = tkinter.BooleanVar()
var4.set(False)
checks3 = tkinter.Checkbutton(tk, text="未选要选路径时不报错", variable=var4, bg='orange')
checks3.place(x=50, y=163)
var5 = tkinter.BooleanVar()
var5.set(False)
checks4 = tkinter.Checkbutton(tk, text="加密/解密后文本框不\n显示文本", variable=var5, bg='orange')
checks4.place(x=292, y=178)
var6 = tkinter.BooleanVar()
var6.set(True)
checks5 = tkinter.Checkbutton(tk, text="使用展示板", variable=var6, bg='orange')
checks5.place(x=292, y=148)
tkinter.Label(tk,text='解密次数').place(x=10,y=590+30)
code_num = tkinter.Entry(tk,width=40)
code_num.insert('insert','1')
# tk.bind('<Button-1>',callback)
code_num.place(x=150,y=590+30)
tk.mainloop() # 显示窗口
try:
with open("mi.txt",'r') as file_ob:
mi=file_ob.read()
except:
mi=111111
try:
with open("mi.txt", 'w') as file:
file.write(str(int(mi)+1))
except:
with open("mi.txt",'w') as file:
file.write('111111')
else:
tkinter.messagebox.showwarning(title='警告',message='警告:你的用户名或密钥错误,不可使用此代码!')
else:
tkinter.messagebox.showerror(title='错误',message='你不可以不填信息!')
因为我以前在还未添加PyQt4的效果时没有任何异常,所以我认为时因为PyQt4的加入使tkinter窗口变了构造然后等tkinter再次调用mainloop()后就变小了,应该是select_file函数中的
app = QtGui.QApplication(sys.argv)
fileInfo = Qt.QFileInfo(filepath)
fileIcon = Qt.QFileIconProvider()
icon = QtGui.QIcon(fileIcon.icon(fileInfo))
return icon
惹的,我就上网查,其他的获取图片的方法,查了少说有5个小时,但是 好像 只有PyQt能做到。(我原来使Python3.10的,因为PyQt4最高只支持Python3.7,没法安装opencv-python还注释掉了import cv2)
我想让我在按选择文件按钮并选择文件后,左下方为加密/解密选择的文件相应的地方能变成选择的文件的图标和文件名,像: