我正在尝试使用tkinter将简单的GUI添加到网站上的portscanner代码中。该代码本身可以正常工作,并且GUI可以按预期方式启动,但是当单击该按钮以运行portscanner的功能时,我得到了:
"btn = Button(root, text='Scan', command= lambda : portscan(port))
NameError: name 'port' is not defined"
def portscan(port):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(0.5)#
try:
con = s.connect((target,port))
print('Port :',port,"is open.")
con.close()
except:
pass
r = 1
for x in range(1,500):
t = threading.Thread(target=portscan,kwargs={'port':r})
r += 1
t.start()
label = Label(root, text='Target IP: ')
label.place(x=0, y=0)
btn = Button(root, text='Scan', command= lambda : portscan(port))
btn.place(x=100, y=100)
root.mainloop()
答案 0 :(得分:0)
运算符lambda 需要一个参数,在之前
“ lambda函数的一般语法非常简单:
lambda参数列表:表达式
参数列表由逗号分隔的参数列表组成,并且表达式是使用这些参数的算术表达式。您可以将函数分配给变量以为其命名。
以下lambda函数示例返回其两个参数的和:“
sum = lambda x, y : x + y
sum(3,4) #Returns 7
或
def sum(x,y):
return x + y
sum(3,4) #Returns 7