Я пытаюсь создать программу, которая по сути является cookie-кликером.Как сделать так, чтобы окно tkinter обновлялось как для одной вещи, так и раз в секунду для другой?
Это для новенького пользователя Python, я использую школьный MacBook Air.Я пытался использовать многопроцессорность, Ray и Thread, но все, что я вижу в них, смущает меня.Я попытался использовать вложенный цикл while, но это заставляло окно обновляться только один раз в секунду, когда мне нужно, чтобы оно обновлялось как при нажатии клавиш, так и раз в секунду.
import random, time, threading, multiprocessing
click_number = 400
tap_num = 0
tap_num = 0
event1 = 0
event2 = 0
event3 = 0
event4 = 0
def click_button():
global click_number, event1, event2, event3, event4
click_number += 1
click_number_label.config(text=click_number)
if click_number >= 500 and event4 == 0:
root.title("Alright, Now That You Have Gotten This Many Clicks I'll Show You How To Use Them")
canvas.config(width=1260,height=768)
click_number_label.place(x=random.randint(0,1260),y=random.randint(0,768))
notification_label.place_forget()
buy_button.grid(column=2,row=0)
root.attributes('-fullscreen',True)
event4 = 1
elif click_number >= 500 and event4 != 0:
click_number_label.place(x=random.randint(0,1260),y=random.randint(0,768))
elif click_number >= 200 and event3 == 0:
root.title("Here, I'll Give You Something To Make This A Little Easier")
canvas.bind("<Key>",tap_button)
notification_label.place(x=400,y=100)
event3 = 1
elif click_number >= 100 and event2 == 0:
root.title("You're Still Going At It Huh?")
event2 = 1
elif click_number >= 50 and event1 == 0:
root.title("Wow, That's A Lot Of Clicks")
event1 = 1
root.update()
def tap_button(event):
global click_number, event1, event2, event3, event4
click_number += 1
click_number_label.config(text=click_number)
if click_number >= 500 and event4 == 0:
root.title("Alright, Now That You Have Gotten This Many Clicks I'll Show You How To Use Them")
canvas.config(width=1260,height=768)
click_number_label.place(x=1260/2,y=330)
notification_label.place_forget()
buy_button.grid(column=2,row=0)
root.attributes('-fullscreen',True)
event4 = 1
elif click_number >= 500 and event4 != 0:
click_number_label.place(x=1260/2,y=330)
elif click_number >= 200 and event3 == 0:
root.title("Here, I'll Give You Something To Make This A Little Easier")
canvas.bind("<Key>",tap_button)
notification_label.place(x=400,y=100)
event4 = 1
root.update()
def add_tapper():
global tap_num
global click_number
if click_number >= 100:
tap_num += 1
click_number -= 100
tap_num_label.config(text=tap_num)
click_number_label.config(text=click_number)
root.update()
click_number_label = Label(root,text=click_number,justify=CENTER)
click_number_label.place(x=380,y=330)
root = Tk()
root.configure(background='#40005c')
canvas = Canvas(root,width=800, height=600,background='#40005c',highlightbackground='#4a005c')
canvas.grid(column=1,row=0)
canvas.focus_set()
yag = PhotoImage(file="table.ppm")
click_button = Button(root,command=click_button)
click_button.config(image=yag,width=300,height=300)
click_button.grid(column=1,row=0)
buy_button = Button(root,text='More Clicks',command=add_tapper)
tap_num_label = Label(root,text=tap_num)
tap_num_label.place(x=500,y=500)
def loop():
while True:
root.update()
def passive():
while True:
if tap_num >= 1:
click_number = click_number + tap_num
click_number_label.config(text=click_number)
root.update()
time.sleep(1)
if __name__ == '__main__':
t1 = multiprocessing.Process(target=loop)
t2 = multiprocessing.Process(target=passive)
t1.start()
t2.start()
Я ожидал, что оно будет запускать обаЦикл постоянно обновляет окно, а также другой цикл, так что он будет обновлять счетчик того, сколько раз вы нажали кнопку не раз в секунду.Вместо этого я получил эту ошибку:
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
Я не знаю, что означает эта ошибка, поэтому я не знал, как ее исправить.