在tkinter创建完窗口后使用PyQt4获取文件图标后tkinter窗口整体变小了

在tkinter创建完窗口后使用PyQt4获取文件图标后tkinter窗口整体变小了

以下是我的代码(下面有诸多缺陷、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='你不可以不填信息!')


运行过程(一开始,风平浪静,看似井井有条):

img

点击选择文件并选择文件后变为:

img


(#__#)

我的解答思路和尝试过的方法:

因为我以前在还未添加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)

我想要达到的结果:

我想让我在按选择文件按钮并选择文件后,左下方为加密/解密选择的文件相应的地方能变成选择的文件的图标和文件名,像:

img

有人有解决方案的恳请回答,谢谢!(急)