Получение ошибки типа: в slice() отсутствуют 2 обязательных позиционных аргумента: ‘result1’ и ‘result2’

#python #python-3.x #pycharm

#python #python-3.x #pycharm

Вопрос:

в настоящее время я создаю проект электронной почты для практики в Python, и до сих пор я придумал эту строку кода:

 `from tkinter import *

import strip as strip

root=Tk()
root.geometry('600x300')
root.resizable(0,0)
root.title("Email slicer")

Email = StringVar()



Label(root , text='Enter the Email address here:', font='arial 15 bold ').place(x=0,y=20)
Entry(root, width=35, textvariable = Email).place(x=300,y=26)

def slice(result1 , result2):

    email = Email

    result1 = email[:email.index('@')]
    result2 = email[email.index('@') 1:]

    Label(root, textvariable=result1, font='arial 15 bold ').place(x=300, y=110)
    Label(root, textvariable=result2, font='arial 15 bold ').place(x=300, y=150)


Label(root, text="Your username is:", font='arial 15 bold ').place(x=0, y=110)
Label(root, text='Your domain is:', font='arial 15 bold ').place(x=0, y=150)

Button(root, font='arial 10 bold', text= 'Submit', bg='Cyan', padx=2, pady=2, width= 20, command=slice).place(x=200,y=60)



root.mainloop()` 

 

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

  TypeError: slice() missing 2 required positional arguments: 'result1' and 'result2' 
 

Мне бы очень помогло, если бы кто-нибудь знал, почему это происходит и как это можно исправить

Спасибо

Комментарии:

1. Как указано в ошибке, ваша slice функция принимает два аргумента, но вы не предоставляете их при вызове функции.

2. Что вы ожидаете передать как result1 и result2 ? Аргумент кнопки command=slice будет вызываться как slice() , поскольку аргументы указывать негде. Может быть, вместо этого вам следует использовать лямбда-выражение? И какими вы ожидаете значения result1 и result2 , если они не определены или не находятся в области видимости на данный момент?

3. @Carcigenicate result1 и result2 даже не находятся в области видимости или не определены в этот момент, верно?

4. @RandomDavis Ой, как-то я запутался в области видимости. Ну, если result1 и result2 определены в функции, похоже, что эти параметры следует просто удалить.

5. Хороший момент — @Gnugget, (result1 , result2) должны ли вообще быть аргументы этой функции, учитывая, что эти значения никогда не считываются в функции перед переназначением новых значений? Если бы у вас это было просто так, def slice(): то эта проблема исчезла бы.

Ответ №1:

 from tkinter import *


root=Tk()
root.geometry('600x300')
root.resizable(0,0)
root.title("Email slicer")

Email = StringVar()
result1 = StringVar()
result2 = StringVar()

Label(root , text='Enter the Email address here:', font='arial 15 bold ').place(x=0,y=20)
Entry(root, width=35, textvariable = Email).place(x=300,y=26)

def slice():

    email = Email.get()

    user = email[:email.index('@')]
    domain = email[email.index('@') 1:]

    result1.set(user)
    result2.set(domain)



Label(root, text="Your username is:", font='arial 15 bold ').place(x=0, y=110)
Label(root, text='Your domain is:', font='arial 15 bold ').place(x=0, y=150)

Button(root, font='arial 10 bold', text= 'Submit', bg='Cyan', padx=2, pady=2, width= 20, command=slice).place(x=200,y=60)
Label(root, textvariable=result1, font='arial 15 bold ').place(x=300, y=110)
Label(root, textvariable=result2, font='arial 15 bold ').place(x=300, y=150)


root.mainloop()
 

Комментарии:

1. Если вы нашли решение своей проблемы, это здорово. Будет намного полезнее, если вы добавите некоторое объяснение того, в чем была ваша ошибка и как вы на самом деле ее решили, а не просто публикуете код