Tkinter 回调

Tkinter callback

我在 button1 中遇到回调的 Tkinter 问题。当我单击 button1 时,我希望调用 SearchIP 方法,但我收到此错误消息:

File "C:\Python27\lib\lib-tk\Tkinter.py", line 1764, in __getattr__
return getattr(self.tk, attr)
AttributeError: SearchIP

到目前为止,这是我的代码尝试:

from Tkinter import *
 try:
# for Python2
import Tkinter as tk
import ScrolledText as tkst
 except ImportError:
# for Python3
import tkinter as tk
import tkinter.scrolledtext as tkst

global Filename

root=tk.Tk()
frame = tk.Frame(root,width=100)
label=Label(root,text="http://")
label.grid(row=0,column=0)
entryVar =tk.StringVar()
entry=Entry(root,width=50,textvariable=entryVar)
entry.grid(row='0',column='1',columnspan=8)
root.button1 = Button(root,text="Search IP",command= root.SearchIP)
root.button1.grid(row=1,column=0)
button2=Button(root,text ="DNS Recon")
button2.grid(row=1,column=1)
button3=Button(root,text ="Port Scanner")
button3.grid(row=1,column=2)
button4=Button(root,text ="Web Crawl")
button4.grid(row=1,column=3)
button5=Button(root,text ="Email Gathering")
button5.grid(row=1,column=4)
frame.grid(row=2,column=0,columnspan=30,rowspan=30)
edit_space = tkst.ScrolledText(
master = frame,
wrap   = 'word',  # wrap text at full words only
width  = 45,      # characters
height = 10,      # text lines
     # background color of edit area
 )
     # the padx/pady space will form a frame
edit_space.pack(fill='both', expand=True, padx=8, pady=8)
root.title("E-Z Security Audting")

mytext = '''\
 Man who drive like hell, bound to get there.
 Man who run in front of car, get tired.
 Man who run behind car, get exhausted.
 Man who run in front of car, get tired.
 Man who run behind car, get exhausted.
 Man who drive like hell, bound to get there.
 Man who run in front of car, get tired.
 Man who run behind car, get exhausted.
     '''
 edit_space.insert('insert', mytext)
 def  SearchIP(root):
    mytext="hello"


root.mainloop()

SearchIP() 不是 tkroot 的一部分,所以使用 command=SearchIP

并使用 def SearchIP(): - 您不必将 root 作为参数传递。

--

如果您需要将参数传递给 SearchIP(some-argument) 那么您必须使用 command=lambda:SearchIP(passed-argument)

使用命令=SearchIP 并且您必须将此功能放在按钮之前或导入之后..

SearchIP() 在定义之前被调用。错误消息只是说解释器不知道 SearchIP 是什么,当时在脚本的更高层调用该函数。要解决此问题,请将 SearchIP 的定义移到调用上方或将调用移到定义下方,或两者兼而有之。

尝试在调用 root.button 之前但在调用 root=to.Tk() 之后使用 command=SearchIP 并定义 SearchIP。并且不要将参数传递给函数 SearchIP,因为您正在使用按钮的通用参数,如果您需要传递参数,请使用 lamda 函数。希望这有帮助