How do I make btn01 or btn go to a random spot every 4 milliseconds and when you click on it it will stop and do something else?
I want to make any btn go to a random spot every 3 milisecounds, and when you click the random button it will do something else like print Hi and stop the button from moving. Here is the code:
I tried while a == True:
but it keeps frezzing when i press the "To make a video" button and just frezzes for a while
import time
import os
import tkinter as tk
import random
from tkinter import *
from tkinter import messagebox
from tkinter import Button
import math
from tkinter import Text
from tkinter import Grid
from tkinter import Place
#from tkinter import place
window = tk.Tk()
window.title("There is no game")
window.geometry("494x300")
numberx = random.randint(1,200)
numbery = random.randint(1,200)
##def clickedrandom():
## a = False
def toplayagame():
print("Hi")
a = True
def tomakeavideo():
T.delete('1.0', END)
T.insert(tk.END, "People who are watching go hit that subscribe button and hit that like button also hit that little bell to turn on notifcations")
T.configure(width = 25, height=6)
while a == True:
numberx = random.randint(1,200)
numbery = random.randint(1,200)
int(numberx)
int(numbery)
time.sleep(0.3)
btn.place(x = numberx, y = numbery)
def pressed():
T.delete('1.0', END)
T.insert(tk.END, "Why are you here?")
btn.place(x=190, y=200)
T.configure(width = 17, height=1)
btn.configure(text = "To play a game", width=12,command=toplayagame)
btn1= Button(window, bd=10,text="To make a video",activebackground='White',activeforeground='Black',bg='Grey',fg='White',height=1,width=15,state=ACTIVE,command=tomakeavideo)
btn1.pack()
btn1.place(x=1,y=200)
T = tk.Text(window, height=1, width=10)
T.pack()
T.insert(tk.END, "Hello user")
btn = Button(window, bd=10,text="Hello",activebackground='Black',activeforeground='White',bg='Grey',fg='White',height=1,width=4,state=ACTIVE,command=pressed)
btn.pack()
btn.place(x=215, y=200)
window.mainloop()
1 answer
-
answered 2021-02-22 22:43
TheLizzard
Use the
<tkinter widget>.after(<time>, <function>)
like this:import tkinter as tk import random playing_game = False def to_make_video(): global btn1 msg = "People who are watching go hit that subscribe button and"+\ " hit that like button also hit that little bell to turn on"+\ " notifcations" text_widget.delete("0.0", "end") text_widget.insert("end", msg) text_widget.configure(width=25, height=6) btn1.destroy() start_game() def game_won(): # When the button is pressed: global playing_game playing_game = False text_widget.delete("0.0", "end") text_widget.insert("end", "Why aren't you leaving?") text_widget.configure(width=23, height=1) btn.destroy() def move_button(): global playing_game # If the game is over stop moving the button if not playing_game: return None # Pick the next random position for the button numberx = random.randint(1, 200) numbery = random.randint(1, 200) btn.place(x=numberx, y=numbery) # After 500 milliseconds call `move_button` again # You can change the value to make it faster/slower root.after(500, move_button) def start_game(): # Start the game global playing_game btn.config(command=game_won) playing_game = True # Start the loop that keeps moving it to new random positions move_button() def pressed(): global btn1 # Ask the user why they are here text_widget.delete("0.0", "end") text_widget.insert("end", "Why are you here?") text_widget.configure(width=17) btn.place(x=190, y=200) btn.configure(text="To play a game", width=12, command=lambda: None) btn1 = tk.Button(root, bd=10, text="To make a video", bg="grey", fg="white", activebackground="white", activeforeground="black", height=1, width=15, command=to_make_video) btn1.place(x=1, y=200) # Create a window root = tk.Tk() root.geometry("310x250") text_widget = tk.Text(root, height=1, width=10) text_widget.pack() text_widget.insert(tk.END, "Hello user") btn = tk.Button(root, bd=10, text="Hello", activebackground="black", activeforeground="white", bg="grey", fg="white", height=1, width=4, command=pressed) btn.place(x=215, y=200) # Run tkinter's mainloop root.mainloop()