解决tkinter卡死问题

参考https://blog.csdn.net/qq_41204464/article/details/86707216

 

核心思路:

1.引入threading库


import threading

2.在界面回调函数里面添加装饰器

# 打包进线程(耗时的操作)
    @staticmethod
    def thread_it(func, *args):
        t = threading.Thread(target=func, args=args) 
        t.setDaemon(True)   # 守护--就算主界面关闭,线程也会留守后台运行(不对!)
        t.start()           # 启动
        # t.join()          # 阻塞--会卡死界面!

奉上本人写的基于tkinter做界面,然后百度关键字爬图程序。有日志调试,不卡死界面

 

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import os, sys
import requests
import base64 #引入编码库
import threading #开线程
from time import  sleep
if sys.version_info[0] == 2:
    from Tkinter import *
    from tkFont import Font
    from ttk import *
    #Usage:showinfo/warning/error,askquestion/okcancel/yesno/retrycancel
    from tkMessageBox import *
    #Usage:f=tkFileDialog.askopenfilename(initialdir='E:/Python')
    #import tkFileDialog
    #import tkSimpleDialog
else:  #Python 3.x
    from tkinter import *
    from tkinter.font import Font
    from tkinter.ttk import *
    from tkinter.messagebox import *
    #import tkinter.filedialog as tkFileDialog
    #import tkinter.simpledialog as tkSimpleDialog    #askstring()

class Application_ui(Frame):
    #这个类仅实现界面生成功能,具体事件处理代码在子类Application中。
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.master.title('百度关键字爬图 by达神 V1.0.3')
        self.master.geometry('763x383')
        self.createWidgets()

    def createWidgets(self):
        self.top = self.winfo_toplevel()

        self.style = Style()

        self.Command2Var = StringVar(value='清空日志')
        self.style.configure('TCommand2.TButton', font=('宋体',9))
        self.Command2 = Button(self.top, text='清空日志', textvariable=self.Command2Var, command=self.Command2_Cmd, style='TCommand2.TButton')
        self.Command2.setText = lambda x: self.Command2Var.set(x)
        self.Command2.text = lambda : self.Command2Var.get()
        self.Command2.place(relx=0.356, rely=0.021, relwidth=0.096, relheight=0.065)

        self.Text6Var = StringVar(value='8')
        self.Text6 = Entry(self.top, textvariable=self.Text6Var, font=('宋体',9))
        self.Text6.setText = lambda x: self.Text6Var.set(x)
        self.Text6.text = lambda : self.Text6Var.get()
        self.Text6.place(relx=0.157, rely=0.439, relwidth=0.075, relheight=0.065)

        self.Text5Font = Font(font=('宋体',9))
        self.Text5 = Text(self.top, fg='#FFFFFF', bg='#000000', font=self.Text5Font)
        self.Text5.place(relx=0.042, rely=0.606, relwidth=0.295, relheight=0.316)
        self.Text5.insert('1.0','说明:\n将图片关键字和爬取页数信息设置好后开\n始爬图。理论值一页30张图片,图片保存\n路径为同录下的该文件夹\n爬取页数最大30推荐设置10\n')

        self.Text4Font = Font(font=('黑体',9))
        self.Text4 = Text(self.top, fg='#00FF00', bg='#000000', font=self.Text4Font)
        self.Text4.place(relx=0.356, rely=0.104, relwidth=0.63, relheight=0.859)
        self.Text4.insert('1.0','爬图日志by达神\n')

        self.Command1Var = StringVar(value='开始爬图')
        self.style.configure('TCommand1.TButton', font=('宋体',9))
        self.Command1 = Button(self.top, text='开始爬图', textvariable=self.Command1Var, command=self.Command1_Cmd, style='TCommand1.TButton')
        self.Command1.setText = lambda x: self.Command1Var.set(x)
        self.Command1.text = lambda : self.Command1Var.get()
        self.Command1.place(relx=0.241, rely=0.439, relwidth=0.096, relheight=0.086)

        self.Text3Var = StringVar(value='1')
        self.Text3 = Entry(self.top, textvariable=self.Text3Var, font=('宋体',9))
        self.Text3.setText = lambda x: self.Text3Var.set(x)
        self.Text3.text = lambda : self.Text3Var.get()
        self.Text3.place(relx=0.052, rely=0.439, relwidth=0.085, relheight=0.065)

        self.Text2Var = StringVar(value='10')
        self.Text2 = Entry(self.top, textvariable=self.Text2Var, font=('宋体',9))
        self.Text2.setText = lambda x: self.Text2Var.set(x)
        self.Text2.text = lambda : self.Text2Var.get()
        self.Text2.place(relx=0.241, rely=0.23, relwidth=0.085, relheight=0.065)

        self.Text1Var = StringVar(value='口罩女')
        self.Text1 = Entry(self.top, textvariable=self.Text1Var, font=('宋体',9))
        self.Text1.setText = lambda x: self.Text1Var.set(x)
        self.Text1.text = lambda : self.Text1Var.get()
        self.Text1.place(relx=0.052, rely=0.23, relwidth=0.159, relheight=0.065)

        self.Label4Var = StringVar(value='总轮数')
        self.style.configure('TLabel4.TLabel', anchor='w', foreground='#FF0000', font=('宋体',9))
        self.Label4 = Label(self.top, text='总轮数', textvariable=self.Label4Var, style='TLabel4.TLabel')
        self.Label4.setText = lambda x: self.Label4Var.set(x)
        self.Label4.text = lambda : self.Label4Var.get()
        self.Label4.place(relx=0.168, rely=0.334, relwidth=0.064, relheight=0.065)

        self.Label3Var = StringVar(value='图片保存路径')
        self.style.configure('TLabel3.TLabel', anchor='w', foreground='#FF0000', font=('宋体',9))
        self.Label3 = Label(self.top, text='图片保存路径', textvariable=self.Label3Var, style='TLabel3.TLabel')
        self.Label3.setText = lambda x: self.Label3Var.set(x)
        self.Label3.text = lambda : self.Label3Var.get()
        self.Label3.place(relx=0.052, rely=0.334, relwidth=0.096, relheight=0.065)

        self.Label2Var = StringVar(value='爬取页数')
        self.style.configure('TLabel2.TLabel', anchor='w', foreground='#FF8000', font=('宋体',9))
        self.Label2 = Label(self.top, text='爬取页数', textvariable=self.Label2Var, style='TLabel2.TLabel')
        self.Label2.setText = lambda x: self.Label2Var.set(x)
        self.Label2.text = lambda : self.Label2Var.get()
        self.Label2.place(relx=0.241, rely=0.125, relwidth=0.106, relheight=0.065)

        self.Label1Var = StringVar(value='关键字')
        self.style.configure('TLabel1.TLabel', anchor='w', foreground='#0000FF', font=('宋体',9))
        self.Label1 = Label(self.top, text='关键字', textvariable=self.Label1Var, style='TLabel1.TLabel')
        self.Label1.setText = lambda x: self.Label1Var.set(x)
        self.Label1.text = lambda : self.Label1Var.get()
        self.Label1.place(relx=0.073, rely=0.125, relwidth=0.085, relheight=0.065)

class Application(Application_ui):
    #这个类实现具体的事件处理回调函数。界面生成代码在Application_ui中。
    def __init__(self, master=None):
        Application_ui.__init__(self, master)

    def getManyPages(self,keyword, pages,now=0):
        params = []
        for i in range(30+30*pages*now, 30 * pages*(now+1) + 30, 30):
            params.append({
                'tn': 'resultjson_com',
                'ipn': 'rj',
                'ct': 201326592,
                'is': '',
                'fp': 'result',
                'queryWord': keyword,
                'cl': 2,
                'lm': -1,
                'ie': 'utf-8',
                'oe': 'utf-8',
                'adpicid': '',
                'st': -1,
                'z': '',
                'ic': 0,
                'word': keyword,
                's': '',
                'se': '',
                'tab': '',
                'width': '',
                'height': '',
                'face': 0,
                'istype': 2,
                'qc': '',
                'nc': 1,
                'fr': '',
                'pn': i,
                'rn': 30,
                'gsm': '1e',
                '1488942260214': ''
            })
        url = 'https://image.baidu.com/search/acjson'
        urls = []
        for i in params:
            urls.append(requests.get(url, params=i,timeout=600000).json().get('data'))
        return urls

    def getImg(self,dataList, localPath):

        if not os.path.exists(localPath):  # 新建文件夹
            os.mkdir(localPath)

        x = 0
        for list in dataList:
            for i in list:
                if list==dataList[-1] and i==list[-1]:
                    print("本轮下载完毕,5秒后检索下一轮")
                    self.Text4.insert(END, '本轮下载完毕,5秒后检索下一轮\n')
                    global now
                    print("当前已经进行完了第:%s轮" % (now + 1))
                    self.Text4.insert(END,"当前已经进行完了第:%s轮\n" % (now + 1))
                    sleep(5)
                    if now<self.whole-1:
                        print("设置的总轮数为:%s,接着进行下一轮"%self.whole)
                        self.Text4.insert(END, "设置的总轮数为:%s,接着进行下一轮\n"%self.whole)
                        now += 1
                        try:
                            dataList = self.getManyPages(self.key, self.pages,now)  # 参数1:关键字,参数2:要下载的页数
                            self.getImg(dataList, r'baiduimgs/%s/' % self.path)  # 参数2:指定保存的路径
                        except TimeoutError:
                            print("连接超时,程序结束")
                            self.Text4.insert(END, "连接超时,程序结束")
                        break
                    else:
                        print('所有轮数进行完毕')
                        self.Text4.insert(END, '所有轮数进行完毕\n')
                        break
                elif i.get('thumbURL') != None:
                    print('正在下载:%s' % i.get('thumbURL'))
                    self.Text4.insert(END, '正在下载:%s\n' % i.get('thumbURL'))
                    try:
                        ir = requests.get(i.get('thumbURL'))
                        open(localPath + '%s_%d.jpg' %(now+1, x), 'wb').write(ir.content)
                        x += 1
                    except requests.exceptions.ConnectionError:
                        pass
                else:
                    print('图片链接不存在')
                    self.Text4.insert(END, '图片链接不存在\n')

    def commad1(self):
        # TODO, Please finish the function here!
        self.key = self.Text1.get()
        self.pages = int(self.Text2.get())
        self.path = self.Text3.get()
        self.whole = int(self.Text6.get())
        if self.key == "" or self.pages == "" or self.path == "":
            showwarning(title='达神提示', message='请确保关键字、页数、路径信息已填写再试')
        else:
            if not os.path.exists("baiduimgs/"):  # 新建文件夹
                os.mkdir("baiduimgs/")
            dataList = self.getManyPages(self.key, self.pages)  # 参数1:关键字,参数2:要下载的页数
            self.getImg(dataList, r'baiduimgs/%s/' % self.path)  # 参数2:指定保存的路径
        pass
    def command2(self):
        self.Text4.delete("1.0",END)
        self.Text4.insert('1.0','爬图日志by达神\n')
    def Command1_Cmd(self, event=None):
        self.thread_it(self.commad1)
    def Command2_Cmd(self, event=None):
        self.thread_it(self.command2)
    @staticmethod
    def thread_it(func, *args):
        t = threading.Thread(target=func, args=args)
        t.setDaemon(True)  # 守护--就算主界面关闭,线程也会留守后台运行(不对!)
        t.start()  # 启动
        # t.join()          # 阻塞--会卡死界面!


if __name__ == "__main__":
    now=0
    img = '''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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAD///8AAP///wAAAAAoAAAAQAAAAIAAAAABACAAAAAAAAAAAAAjLgAAIy4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABAAAAAQAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAABgAAAAwAAAAUAAAAGgAAAB8AAAAnAAAALgAAADQAAAA3AAAAMgAAACgAAAAeAAAAFwAAAA4AAAAIAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAKAAAADsAAABOAAAAYAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABISEgATExMAFBQUABQUFAAVFRUAFhYWABcXFwAYGBgAGBgYABcXFwAXFxcAFhYWABUVFQATExMAERERAA8PDwAPDw8ADQ0NAAsLCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//'''''
    tmp = open("tmp.ico", "wb+")
    tmp.write(base64.b64decode(img))
    tmp.close()
    top = Tk()
    top.iconbitmap('tmp.ico')
    os.remove("tmp.ico")  # 删掉临时文件
    Application(top).mainloop()



 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值