Две функции «greet_user» и «display_message_random» не вызываются отдельноPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Две функции «greet_user» и «display_message_random» не вызываются отдельно

Сообщение Anonymous »

Я новичок в Python и пытаюсь создать простое приложение, в котором появляется простое окно с графическим интерфейсом, и программа просит пользователя ввести свое имя, а после нажатия кнопки «Приветствовать!» Кнопка программа должна отображать приветствие, а затем отображать мотивационное сообщение через случайный интервал времени, который в данном случае составляет от 1 до 2 минут.
Первая часть работает отлично, появляется окно графического интерфейса вверх, я могу ввести имя и нажать кнопку, но ничего не происходит - однако, если я подожду 1-2 минуты, приветствие наконец отобразится ВМЕСТЕ с мотивационным сообщением. Вместо этого я хочу, чтобы сначала отображалось приветствие, а затем, через 1–2 минуты, отображалось случайное мотивационное сообщение. Я использую pycharm в качестве своей IDE. Вот полный код:

Код: Выделить всё

import time
import random
import tkinter

messages = [
"You're doing great. Keep it up!",
"Let's keep working. No time to waste!",
"Don't stop now! There's still work to do.",
"Keep up the good work! You're killing it!",
"Don't get distracted. Stay focused!"
]

def display_message_random(label):
while True:
delay_in_minutes = random.randint(1, 2)
delay_in_seconds = delay_in_minutes * 60
time.sleep(delay_in_seconds)
selected_message = random.choice(messages)
label.config(text=selected_message)
root.update()

# Creates the main pop up window
root = tkinter.Tk()
root.title("Albi - Your Productivity Pal!")

# Get user name (in the GUI)
user_name_label = tkinter.Label(root, text="Hi! Hope you're doing well. I'm Albi. What's your name?\n")
user_name_label.pack()

user_name_entry = tkinter.Entry(root)
user_name_entry.pack()

def greet_user():
user_name = user_name_entry.get()
greeting_label = tkinter.Label(root, text="Nice to meet you " + user_name + "!\n" + "I hope you have a productive session!")
greeting_label.pack()
user_name_label.destroy()  # Remove the user name prompt after greeting
user_name_entry.destroy()  # Remove the entry field after greeting
display_message_random(label)  # Start displaying messages

greet_button = tkinter.Button(root, text="Greet Me!", command=greet_user)
greet_button.pack()

# Label to display messages
label = tkinter.Label(root, text="", font=("Arial", 14))
label.pack()

# Start the main event loop - calls the function
root.mainloop()
Я попробовал поставить вторую функцию перед функцией, и каким-то образом мне удалось отобразить приветствие, но тогда случайные сообщения никогда не отображались.
Я новичок в Python, поэтому, пожалуйста, объясните мне, в чем проблема. Мне 5 лет. Буду очень признателен за любую помощь. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/784 ... -called-se
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»