Форум сайта python.su
Помогите! Функция def начинает работать до того как её вызывает кнопка
Вот сам код:
from tkinter import *
from tkinter import ttk
import random
root = Tk()
root.title(“METANIT.COM”)
root.geometry(“500x400”)
editor = Text(height=5)
editor.pack(anchor=N, fill=X)
label = ttk.Label()
label.pack(anchor=N, fill=BOTH)
print(123)
vibor = str(editor.get(“1.0”, “end”))
def game():
print(123)
chislorob = str((random.randint(1, 100)))
w = 0
while w <= 4:
if chislorob in :
quit('Случайное число является простым, поэтому перезапустите программу и надейтесь что оно не попадётся снова')
if vibor == chislorob:
quit('Ура!!! Вы победили!')
else:
editor.delete(“1.0”, END)
podvibor = str(editor.insert('1.0', ‘Вы выбрали не правильное число. Хоти те подсказку???’))
if podvibor == :
podchpr = random.randint(1, 10)
podch = str(chislorob // podchpr)
w = w + 1
if w == 3:
editor.insert(“1.0”, w)
#quit('У вас закончились жизни')
button = ttk.Button(text=“ввести”, command=game())
button.pack(side=BOTTOM)
root.mainloop()
Отредактировано H0pZyk (Май 15, 2023 20:05:05)
Офлайн
command=game
Офлайн
Проблема заключается в том, что функция game() вызывается сразу после создания кнопки, а не при её нажатии. В строке button = ttk.Button(text=“ввести”, command=game()) вы вызываете функцию game() с помощью скобок, поэтому она вызывается сразу при создании кнопки. Вместо этого вам нужно передать ссылку на функцию game в качестве аргумента command без скобок:
button = ttk.Button(text=“ввести”, command=game)
Офлайн