#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. Если вы нашли решение своей проблемы, это здорово. Будет намного полезнее, если вы добавите некоторое объяснение того, в чем была ваша ошибка и как вы на самом деле ее решили, а не просто публикуете код