При получении имени не определена ошибка и неизвестно почему - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь добавить простой графический интерфейс, используя tkinter, к коду портов, найденному на сайте. Код сам по себе работает нормально, и графический интерфейс отображается, как и ожидалось, но при нажатии кнопки для запуска функции сканера портов я получаю следующее:

"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 голосов
/ 11 января 2019

Оператор лямбда требует аргумент перед двоеточие

"Общий синтаксис лямбда-функции довольно прост:

лямбда-аргумент_лист: выражение

Список аргументов состоит из списка аргументов, разделенных запятыми, и выражение является арифметическим выражением, использующим эти аргументы. Вы можете назначить функцию переменной, чтобы дать ей имя.

Следующий пример лямбда-функции возвращает сумму двух ее аргументов: "

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...