Вот полное руководство для того, чтобы вы решили вашу проблему только с несколькими простыми изменениями .
Есть три простые проблемы с вашей программой:
Задача 1:
Вы используете or
в неправильный путь, поэтому условие (if
) всегда возвращает True
, а блок else
никогда не выполняется, Здесь:
if (len(name1)) - (len(name2)) == 2 or 1 or 0 or -1 or -2 or -3:
Решение:
Вы можете использовать range
, чтобы решить эту проблему. Вы должны дать ему два числа, помня, что второе число не будет включено в диапазон, например:
if (len(name1)) - (len(name2)) in range(-3, 3):
Задача 2:
Вы делаете ошибку в конкатенации строк, Здесь:
text="Here is how much you love each other: ", (randint(40, 100)), '%')
Решение:
Есть два возможно решения для этой задачи:
- Вы можете использовать символ плюс "+" вместо запятых в нем, например:
text="Here is how much you love each other: " + str(randint(40, 100)) + '%'
Но как вы можете видеть, тогда вам также нужно будет преобразовать случайное целое число (randint(40, 100))
в строку, например: str
(randint(40, 100))
Самым простым решением этой проблемы является использование отформатированной строки, например:
text=f"Here is how much you love each other: {(randint(40, 100))}%"
Задача 3:
Основная причина для получения ошибки заключается в том, что вы определили свои метки (l1
и l2
) внутри функции (get_love()
), и вы пытаетесь pack()
эти метки вне функции .
Решение:
Решение состоит в том, чтобы удалить pack()
извне функции для обеих меток (l1
и l2
) и pack()
их внутри функции сразу после их определения. Как это:
def get_love():
name1 = entry1.get()
name2 = entry2.get()
if (len(name1)) - (len(name2)) == 2 or 1 or 0 or -1 or -2 or -3:
l1 = tk.Label(root, text=f"Here is how much you love each other: {(randint(40, 100))}%")
l1.pack()
else:
l2 = tk.Label(root, text=f"Here is how much you love each other: {(randint(0, 49))}%")
l2.pack()
Полный фиксированный код:
Вот полный фиксированный код для вас:
import tkinter as tk
from random import *
def get_love():
name1 = entry1.get()
name2 = entry2.get()
if (len(name1)) - (len(name2)) in range(-3, 3):
l1 = tk.Label(root, text=f"Here is how much you love each other: {(randint(40, 100))}%")
l1.pack()
else:
l2 = tk.Label(root, text=f"Here is how much you love each other: {(randint(0, 49))}%")
l2.pack()
root = tk.Tk()
root.title("Love Calculator")
root.minsize(600, 600)
root.configure(background='pink')
w = tk.Label(root, bg="pink", font="Times 32 bold", text="Welcome to Love Calculator")
w1 = tk.Label(root, bg="pink", font="Arial 20", text=" ")
w2 = tk.Label(root, bg="pink", fg="white", font="Arial 19", text="Write your name here")
entry1 = tk.Entry(root)
w10 = tk.Label(root, bg="pink", font="Arial 20", text=" ")
w3 = tk.Label(root, bg="pink", fg="white", font="Arial 19", text="Write your lover's name here")
entry2 = tk.Entry(root)
b = tk.Button(root, text="Click to see how much you love each other", font='Times 20 bold', command=get_love)
w.pack()
w1.pack()
w2.pack()
entry1.pack()
entry2.pack()
w3.pack()
w10.pack()
b.pack()
root.mainloop()