【问题标题】:How to make all of my for loop runs at the same time如何让我的所有 for 循环同时运行
【发布时间】:2017-04-29 09:46:24
【问题描述】:

我有几个 for 循环会以 0.5 秒的间隔闪烁对象 5 秒。我想弄清楚如何让所有这些对象同时闪烁,换句话说,我想同时运行所有的 for 循环。

需要帮助!

        count1=5

        for k in range (count1):
            error.setFill('grey')
            time.sleep(.50)
            error.setFill('orange')
            time.sleep(.50)

        for l in range (count1):              
            go.setFill('red')
            time.sleep(.50)
            go.setFill('green')
            time.sleep(.50)

        for m in range (count1):               
            warning.setFill('black')
            time.sleep(.50)
            warning.setFill('red')
            time.sleep(.50)

        for u in range (count1):
            Verify.setFill('green')
            time.sleep(.50)
            Verify.setFill('grey')
            time.sleep(.50)

        for w in range (count1):
            Launch.setFill('red')
            time.sleep(.50)
            Launch.setFill('green')
            time.sleep(.50)

【问题讨论】:

  • 使用线程模块
  • 不,这个问题被标记为wxpython,所以应该使用GUI工具包及其事件系统来完成与定时器相关的任务。没有 sleep(),没有多线程,没有多进程。
  • @blubberdiblub 我同意。要么按照答案 VMRuiz 和 Charlie 的建议将循环组合成一个循环,要么启动 wx.Timer() 命令,每个命令间隔 500 毫秒

标签: python python-3.x for-loop wxpython ipython


【解决方案1】:

这是一种简单的方法,假设setFill() 足够快,因此它们似乎同时打开和关闭。

count1=5

for k in range (count1):
    # Turn on
    error.setFill('grey')
    go.setFill('red')
    warning.setFill('black')
    Verify.setFill('green')
    Launch.setFill('red')
    time.sleep(.50)
    # Turn off
    error.setFill('orange')
    go.setFill('green')
    warning.setFill('red')
    Verify.setFill('grey')
    Launch.setFill('green')
    time.sleep(.50)

在另一种情况下,您需要为每个灯创建一个新线程。

【讨论】:

  • @Nina 如果这些答案之一回答了您的问题,请单击接受按钮接受它。如果有任何一个有用,请点击有用的向上箭头
【解决方案2】:

既然你所有的循环都在count1的范围内运行,为什么不在同一个循环中运行所有命令,例如:

    count1=5

    for n in range (count1):
    # first line of each loop
        error.setFill('grey')
        go.setFill('red')
        warning.setFill('black')
        Verify.setFill('green')
        Launch.setFill('red')
    # pause and then third line of each loop
        time.sleep(.50) 
        error.setFill('orange')
        go.setFill('green')         
        warning.setFill('red')
        Verify.setFill('grey')
        Launch.setFill('green')
        time.sleep(.50)

这就是一次运行所有循环,或者更确切地说是在同一个循环中,它需要更少的努力和打字。希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多