@OgnevEgor

Python tkinter как сделать чтобы after срабатывал только несколько раз?

Привет
Создаю небольшую программку. При нажатии на "NO" должно открываться большое количество раз окно с обезьяной, я смог это сделать, но проблема в том, что после компиляции программы и запуска у других пользователей после определённого количества раз появления картинки программа зависает и закрывается. Хочу сделать так, чтобы функция "open_window()", работала лишь определённое количество раз, к примеру 30, но ни как не получается создать счётчик
Код:
from tkinter import *
import random

def move(event):
x = random.random()
y = random.random()
global button2
button2.place(relx = x, rely = y)

def open_window():
win = Toplevel()
win.title("MONKEY")
win.geometry("1280x720")
monkey = Canvas(win, height=720, width=1280)
monkey.grid(row=0, column=0)
img = PhotoImage(file="monkey.png")
monkey.create_image(50, 50, anchor="nw", image=img)
win.lift()
win.attributes('-topmost', True)
win.overrideredirect(True)
win.after(10, open_window)
monkey.mainloop()

root = Tk()
root.title("ВАЖНЫЙ ВОПРОС! ")
root.geometry("600x250+650+400")
root.overrideredirect(True)
root.lift()
root.attributes('-topmost', True)
label = Label(root, text="Monkey?", font=('calibri', 30, "bold"), foreground='black', )
label.pack()
button1 = Button(root, text="No", font=('calibri', 20, "bold"), foreground='blue', command=open_window)
button1.place(relx=0.6, rely=0.5, anchor='center')
button2 = Button(root, font=('calibri', 20, "bold"), foreground='brown', text="Yes", command=move)
button2.place(relx=0.4, rely=0.5, anchor='center')
button2.bind("", move)
root.mainloop()
  • Вопрос задан
  • 312 просмотров
Пригласить эксперта
Ответы на вопрос 1
@QPDEH
Даже не джун, любитель
Задай сначала где-нибудь рядом с root = Tk переменную. Пусть будет iterat = 0.
Потом замени win.after(10, open_window) на:
global iterar
if iterat <= 30:
    win.after(10, open_window)
    iterat += 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы