Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Checkbutton.get()值不起作用,获取AttributeError:';选中按钮';对象没有属性';获取';_Python_Python 3.x_Tkinter - Fatal编程技术网

Python 3.x Checkbutton.get()值不起作用,获取AttributeError:';选中按钮';对象没有属性';获取';

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

我正在为一个学校项目创建一个用于网络侦察的GUI,并试图让run按钮激活作为checkbutton打开的任何东西。目前,我在获取checkbuttons的值时遇到了一个问题,有点卡住了。请让我知道我做错了什么。看到很多人使用tkinter的类,但我的类到目前为止似乎还有效,但这可能就是我遇到问题的原因。希望得到快速响应,以下是我的代码转储:

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
的方法(或任何类型的属性)。您的问题是什么啊,谢谢,我已经考虑了一段时间。这是漫长的一天。