Cem微波消解:如何为微波计时器添加额外的秒数

我在一个非常初学者的水平与 Python,我有一个简单的项目为自己。

本质上,目标是在微波炉上重新创建“+ 30 秒”按钮的功能,并带有更新显示,其中初始按下既增加了 30 秒并启动了计时器,随后的每次按下都增加了 30 秒倒计时计时器,第二个按钮停止计时器。

这是我一直在使用的基本计时器逻辑。

def countdown(t=30):
    while t:
        mins, secs = divmod(t, 60)
        timer = '{:02d}:{:02d}'.format(mins, secs)
        print(timer, end="\r")
        time.sleep(1)
        t -= 1
    print('Done!')
1

由于以下原因,问题比看起来要复杂一些:

如果您没有为并行事件使用任何库,那么,函数 countdown()将阻止主循环,并且在倒计时运行时您将无法执行任何操作(包括再次单击按钮以添加更多时间)

如果你想使用相同的按钮添加时间,你必须检查屏幕上是否已经有倒计时打印,如果你不检查它,每次点击一个新的时钟会出现。

我建议使用asynciolib 如下:

import asyncio
# Create a global variable for the time
secs = 0 
#This function adds +30secs
def addTime():
    global secs
    secs+=30
#This is the func that gather the addTime function and the async clock
async def timerAction():
    #This "while" is used to simulate multiple cliks on your on. 
    # If you implement this as a callback delete the "while"
    while True: 
        j = 0 #Counter if a clock is already running
        addTime() #Add time
        for task in asyncio.all_tasks(): #This loop checks if there's a countdown already running
            if task.get_name()=='countdown':
                j+=1
        if j == 0: #If no running countdown, j==0, and fires the countdown
            taskCountdown = asyncio.create_task(countdown(), name='countdown')
        await asyncio.sleep(10) #Wait 10secs between each call to the func (each call simulate a click)
    
async def countdown():
    global secs
    while secs>0:
        mins, secs = divmod(secs, 60)
        timer = '{:02d}:{:02d}'.format(mins, secs)
        print(timer, end="\r")
        await asyncio.sleep(1)
        secs -= 1
    print('Done!')
asyncio.run(timerAction())

关于 fisrt 调用:

00:30

10 秒后:

00:50

10 秒后:

01:10

等等

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(258)
Crown皮鞋:WatchKitAPIforForceTouch/DigitalCrown
上一篇
0基础学python入门书籍:良好的密码学 /加密书籍(books about cryptography)
下一篇

相关推荐

  • comeandgetyourlove音乐爱就在你身边

    Come and Get Your Love是一首热门的歌曲,由美国摇滚乐队Redbone演唱。这首歌曲于1974年发行,被收录在他们的专辑《Wovoka》中。歌曲以放克曲风为主,旋律活泼,曲调悠扬,歌词朗朗上口,深受歌迷喜爱。…

    2023-06-29 07:47:31
    0 81 27
  • codeblocks无法编译运行:Codeblocks无法编译运行的解决方案

    codeblocks无法编译运行的原因可能有很多,下面以一段简单的C语言代码为例,来说明codeblocks无法编译运行的情况。…

    2023-07-11 08:01:55
    0 93 24
  • gitlab ci 自动化部署:使用 Gitlab CI 自动化部署提升开发效率

    GitLab CI 自动化部署是一种基于 GitLab CI/CD 的自动化部署方案,可以实现快速、可靠的部署流程。它将代码提交、构建、测试、部署等步骤集成在一起,使得开发者可以更加轻松地完成部署工作。下面是一个示例 .gitlab-ci.yml 文件,可以帮助你实现 GitLab CI 自动化部署:…

    2023-05-20 05:45:38
    0 33 44
  • xl和xe汽车cvt:探索XL和XE汽车的CVT技术优势

    XL和XE汽车CVT是一种变速器,它使用液力变矩器代替传统的机械变速器,以达到更高的效率。它的工作原理是,当发动机输出功率时,液力变矩器就会将这些功率转换为液压能量,然后将能量传递到变速器的输出轴上,从而实现变速。…

    2023-05-16 07:36:03
    0 44 88
  • js添加css:This is a Title

    使用js添加css可以通过修改元素的style属性来实现,具体代码如下:…

    2023-05-27 12:30:24
    0 53 62
  • css 字符间距:### 世界上最美的地方

    示例示例CSS 字符间距是指在文本中的字符之间添加间距,以增强文本的可读性。它可以使文本更容易阅读,也可以使文本看起来更美观。代码示例:…

    2023-04-15 08:45:29
    0 34 35
  • git 删除commit记录:回滚Git Commit记录

    git删除commit记录可以使用git reset命令。使用方法:…

    2023-07-07 04:31:44
    0 54 49
  • java实现tcp:使用Java实现TCP网络编程

    TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。它使用三次握手来建立可靠的连接,并且在数据传输期间可以检测丢失的数据包并重新发送。…

    2023-01-31 10:33:14
    0 90 45

发表评论

登录 后才能评论

评论列表(21条)