接收名称未定义错误,不确定原因

时间:2019-01-11 03:23:23

标签: python user-interface

我正在尝试使用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()

1 个答案:

答案 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

调味:https://www.python-course.eu/python3_lambda.php