Python 3.x Checkbutton.get()值不起作用,获取AttributeError:';选中按钮';对象没有属性';获取';
我正在为一个学校项目创建一个用于网络侦察的GUI,并试图让run按钮激活作为checkbutton打开的任何东西。目前,我在获取checkbuttons的值时遇到了一个问题,有点卡住了。请让我知道我做错了什么。看到很多人使用tkinter的类,但我的类到目前为止似乎还有效,但这可能就是我遇到问题的原因。希望得到快速响应,以下是我的代码转储:Python 3.x Checkbutton.get()值不起作用,获取AttributeError:';选中按钮';对象没有属性';获取';,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我正在为一个学校项目创建一个用于网络侦察的GUI,并试图让run按钮激活作为checkbutton打开的任何东西。目前,我在获取checkbuttons的值时遇到了一个问题,有点卡住了。请让我知道我做错了什么。看到很多人使用tkinter的类,但我的类到目前为止似乎还有效,但这可能就是我遇到问题的原因。希望得到快速响应,以下是我的代码转储: from tkinter import * import subprocess #from tkinter.filedialog import asksav
from tkinter import *
import subprocess
#from tkinter.filedialog import asksaveasfilename
#save file
#saveFile = asksaveasfilename()
#print("You can write data to " + saveFile)
startup = Tk()
names = ["about","accounts","admin","administrador","administrator","ads","adserver","adsl","agent","blog","channel","client","dmz","dns","dns0","dns1","dns2","dns3","external","file","forum","forums","ftp","ftpserver","host","http",
"https","ids","intern","intranet","irc","linux","log","mail","map","member","members","name","nc","ns","ntp","ntserver","office","pop","pptp","print","printer","pub","public","root","route","router","server","smtp","sql","ssh","telnet",
"voip","webaccess","webadmin","webserver","website","win","windows","www","xml"]
nslookup= IntVar()
def cmdnslookup():
domain='microsoft.com'
process = "dig "+domain+" ns > NameServerLookup.txt"
subprocess.Popen(process, shell=True)
def cmdmxlookup():
domain='microsoft.com'
process = "dig "+domain+" mx > MailServerLookup.txt"
subprocess.Popen(process, shell=True)
def cmdipForward():
for name in names:
domain='www.stcloudstate.edu'
process = "host "+name+"."+domain+" | grep 'has address' >> ForwardIPLookup.txt"
subprocess.Popen(process, shell=True)
##def cmdipReverse():
##
##def cmdipAdditional():
##
##def cmdzoneTransfer():
##
##def cmdoneSixtyOne():
##
##def cmdsnmp():
##
##def cmdrpc():
##
##def cmdip():
##
def close():
startup.destroy()
def menu():
startup.title("Wilson Recon Tool")
menubar = Menu(startup)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Close", command=close)
menubar.add_cascade(label="file", menu=filemenu)
startup.config(menu=menubar)
topFrame = Frame(startup)
topFrame.pack()
bottomFrame = Frame(startup)
bottomFrame.pack(side=BOTTOM)
about = Label(topFrame, text="Application Description", font="ariel 10 bold").grid(row=0, column=0, sticky=W)
description = StringVar()
description.set("This is a network recon tool. It's designed to help make reconassiance easier for those not familar with terminal based tools." )
message = Message(topFrame, textvariable=description, width=250)
message.grid(row=1,column=0)
recon = Label(bottomFrame, text="Recon Information", font="ariel 10 bold")
recon.grid(row=0,column=0,pady=5,sticky=W)
global nslookup
nslookup = Checkbutton(bottomFrame, text="Name Server Lookup",variable=nslookup)
nslookup.grid(row=1,column=0,sticky=W)
mxlookup= IntVar()
mxlookup = Checkbutton(bottomFrame, text="Mail Server Lookup",variable=mxlookup)
mxlookup.grid(row=2,column=0,sticky=W)
ipForward= IntVar()
ipForward = Checkbutton(bottomFrame, text="Forward Domain Lookup",variable=ipForward)
ipForward.grid(row=3,column=0,sticky=W)
ipReverse= IntVar()
ipReverse = Checkbutton(bottomFrame, text="Reverse Domain Lookup",variable=ipReverse)
ipReverse.grid(row=4,column=0,sticky=W)
ipAdditional= IntVar()
ipAdditional = Checkbutton(bottomFrame, text="Additional IPs Check",variable=ipAdditional, state=DISABLED)
ipAdditional.grid(row=5,column=0,sticky=W)
zoneTransfer= IntVar()
zoneTransfer = Checkbutton(bottomFrame, text="Zone Transfer Check",variable=zoneTransfer, state=DISABLED)
zoneTransfer.grid(row=6,column=0,sticky=W)
oneSixtyOne= IntVar()
oneSixtyOne = Checkbutton(bottomFrame, text="Onesixtyone",variable=oneSixtyOne)
oneSixtyOne.grid(row=7,column=0,sticky=W)
snmp= IntVar()
snmp = Checkbutton(bottomFrame, text="SNMPWalk",variable=snmp)
snmp.grid(row=8,column=0,sticky=W)
rpc= IntVar()
rpc = Checkbutton(bottomFrame, text="RPC Client using NETBIOS",variable=rpc, state=DISABLED)
rpc.grid(row=9,column=0,sticky=W)
otherNetwork = Label(bottomFrame, text="Other Network Information", font="ariel 10 bold")
otherNetwork.grid(row=10,column=0,pady=5,sticky=W)
ip= IntVar()
ip = Checkbutton(bottomFrame, text="Local Machine",variable=ip)
ip.grid(row=11,column=0,sticky=W)
## nslookup.pack()
## mxlookup.pack()
## ipForward.pack()
## ipReverse.pack()
## ipAdditional.pack()
## zoneTransfer.pack()
## oneSixtyOne.pack()
## snmp.pack()
## rpc.pack()
## ip.pack()
def cmdrunButton():
global nslookup
nslookup.get()
mxlookup.get()
ipForward.get()
ipReverse.get()
ipAdditional.get()
zoneTransfer.get()
oneSixtyOne.get()
snmp.get()
rpc.get()
ip.get()
print(nslookup)
runButton = Button(bottomFrame, text="Run", command=cmdrunButton)
runButton.grid(row=12, padx=3,pady=3,column=0,sticky=W)
quitButton = Button(bottomFrame, text="Quit",command=close)
quitButton.grid(row=12, padx=3,pady=3,column=1,sticky=E)
## runButton.pack()
## quitButton.pack()
startup.mainloop()
menu()
由于这个错误,我尝试将其中一个变量移动到全局变量,以查看该工作是否有效,并且似乎不起作用 让我们只看一个Checkbutton变量,看看发生了什么
mxlookup = IntVar()
这里,mxlookup
是一个IntVar,表示将从下一行绑定到Checkbutton的Tcl变量
mxlookup = Checkbutton(bottomFrame, text="Mail Server Lookup",variable=mxlookup)
在这一行中,使用上一行中创建的IntVar创建一个Checkbutton,然后将其分配给mxlookup
名称
mxlookup.get()
最后,当您到达这一位时,
mxlookup
指的是Checkbutton实例,而不是以前的IntVar实例。Checkbutton实例没有get()
方法,因此当您尝试调用mxlookup.get()
时,Python会引发AttributeError。要解决这个问题,您可以为IntVar、Checkbutton或两者使用不同的名称。请原谅我没有评论。正如错误消息所说,Checkbutton实例没有名为get
的方法(或任何类型的属性)。您的问题是什么啊,谢谢,我已经考虑了一段时间。这是漫长的一天。