Python tkinter即使穿线也会冻僵
我目前正在开发一个web扫描仪,可以连续扫描易受攻击的URL。 我希望我的程序有一个GUI,因此选择使用tkinter 目前我面临一个问题,当我通过按下按钮从主程序(GUI)调用其他脚本时,GUI将冻结,并且只有在程序扫描完整个单词列表后才会加载 我知道线程,并尝试将其应用到我的程序中。但它似乎不起作用,我不确定为什么 我花了几个小时浏览了许多stackoverflow页面并实现了它们,但似乎仍然没有成功。我试过的一个例子是 我的代码如下: 主图形用户界面Python tkinter即使穿线也会冻僵,python,multithreading,python-2.7,tkinter,Python,Multithreading,Python 2.7,Tkinter,我目前正在开发一个web扫描仪,可以连续扫描易受攻击的URL。 我希望我的程序有一个GUI,因此选择使用tkinter 目前我面临一个问题,当我通过按下按钮从主程序(GUI)调用其他脚本时,GUI将冻结,并且只有在程序扫描完整个单词列表后才会加载 我知道线程,并尝试将其应用到我的程序中。但它似乎不起作用,我不确定为什么 我花了几个小时浏览了许多stackoverflow页面并实现了它们,但似乎仍然没有成功。我试过的一个例子是 我的代码如下: 主图形用户界面 from Tkinter import
from Tkinter import *
from URLFuzzerNonRecursive import nonrecursiveURL
import threading
def thread(value):
t = threading.Thread(target=nonrecursiveURL(value))
t.start()
#t.join()
def main():
master = Tk()
master.title("Web Fuzzer")
master.geometry("700x400")
urllabel = Label(master, text="Input URL to Fuzz")
urllabel.place(relx=0.35, rely=0.05)
urlinput = Entry(master, bd =5)
urlinput.place(relx=0.35, rely=0.10)
urlinput.insert(END,"http://")
nonrecursionURL = Button(master, text="Non-Recursive URL Fuzzer", command=lambda: thread(urlinput.get()),width=20, height=2)
nonrecursionURL.place(relx=0.35, rely=0.30)
master.mainloop()
if __name__ == '__main__':
main()
主GUI调用的Python脚本:
import requests
import tkinter.messagebox as tkmb
import tkinter as tk
import threading
def nonrecursiveURL(URLtoTake):
root = tk.Tk()
ybar = tk.Scrollbar(root)
T = tk.Text(root)
ybar.config(command=T.yview)
T.config(yscrollcommand=ybar.set)
T.grid(row=0, column=0, columnspan=5)
ybar.grid(row=0, column=5, sticky="ns")
try:
with open('wordlist.txt') as f:
for line in f:
website = URLtoTake.strip('\n')+"/" + line
URL = requests.get(website)
if URL.status_code == 200:
foundsites.append(website)
info_message = "Status code: "+ str(URL.status_code) + " Found :" + website
T.insert(tk.END,info_message)
else:
info_message = "Status code: "+ str(URL.status_code) +" Not Found :" + website
T.insert(tk.END,info_message)
for i in foundsites:
T.insert(tk.END,"\n")
T.insert(tk.END,"Found : ")
T.insert(tk.END, i)
except requests.exceptions.RequestException:
info_message = "Please enter a valid URL ( inclusive of http:// )"
tkmb.showinfo("Output", info_message)
问题中发布的
线程
函数是直接调用非递归URL
函数,然后将其作为线程目标传递
def螺纹(值):
线程(目标=非递归URL(值))