我正在尝试使用tkinter向站点上的portscanner代码添加一个简单的GUI。代码本身运行良好,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()发布于 2019-01-11 11:52:00
运算符lambda 在冒号之前需要参数
“lambda函数的一般语法非常简单:
lambda argument_list:表达式
参数列表由逗号分隔的参数列表组成,表达式是使用这些参数的算术表达式。您可以将函数赋值给变量,以便为其命名。
下面的lambda函数示例返回其两个参数的总和:“
sum = lambda x, y : x + y
sum(3,4) #Returns 7或
def sum(x,y):
return x + y
sum(3,4) #Returns 7https://stackoverflow.com/questions/54139959
复制相似问题