【问题标题】:How can you run two python tkinter files simultaneously when one has a loop in it?当一个文件中有循环时,如何同时运行两个 python tkinter 文件?
【发布时间】:2023-02-04 22:18:29
【问题描述】:

我制作了一个 tkinter 国家猜谜游戏女巫工作正常但需要时间才能运行。所以我在一个单独的文件中为它制作了一个带有循环动画的加载屏幕。我找不到一种方法来先运行加载屏幕,然后在加载屏幕上的动画仍在运行时运行游戏。

加载屏幕代码:

`from tkinter import*

from time import*
import os

import random

run = 0
loads = True
dotnum = 0
def task():
   
    sleep(2) 
    root.destroy()

root = Tk()
root.title("Loading...")
root.geometry("1280x720")

Background = PhotoImage(file = "Images\Loadscreen.png")
Loaders = PhotoImage(file = "Images\Loader.gif")


image = Label(root,width=1000,height=500,image=Background)
image.place(x=0, y=0, relwidth=1, relheight=1)




frameCnt = 16
frames = [PhotoImage(file='Images\Loader.gif',format = 'gif -index %i' %(i)) for i in range(frameCnt)]

def update(ind):
        frame = frames[ind]
        ind += 1
        if ind == frameCnt:
            ind = 0
        loadanim.configure(image=frame)
        root.after(100, update, ind)
loadanim = Label(root, bg = "black")
loadanim.place(x = 450, y = 450)



root.after(0, update, 0)


root.mainloop()`

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    要先运行加载屏幕,您可以在调用游戏代码之前调用加载屏幕代码。

    您可以修改代码以将一个函数作为参数传递给加载屏幕,然后在加载屏幕被销毁后调用该函数。这将允许您在加载屏幕完成后运行游戏代码。

    例如:

    def run_game():
        # game code here
        pass
    
    def run_loading_screen(callback):
        # loading screen code here
        root.after(2000, callback)
        root.mainloop()
    
    run_loading_screen(run_game)
    

    这里,run_game是包含游戏代码的函数,run_loading_screen是包含加载屏幕代码的函数。 run_loading_screen 函数接受一个回调参数,这是在加载屏幕被销毁后调用的函数。在加载屏幕代码中,root.after 方法用于在 2000 毫秒(2 秒)后调用回调函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多