【问题标题】:Dropbox script/Do something when download doneDropbox 脚本/下载完成后执行某些操作
【发布时间】:2020-01-18 17:54:54
【问题描述】:

当我查看 Dropbox 上传器 https://github.com/andreafabrizi/Dropbox-Uploader 时,也许我错过了一些东西。我正在创建一个 python 脚本,该脚本从插入 RPi 的 USB 上传文件,但需要拥有它,以便在上传完成后,布尔值更改为 false。有没有办法检测到这一点?代码在我希望发生的地方被注释。

import pygame
from pygame.locals import *
from subprocess import call

uploadSym = pygame.image.load('uploadsymbol.png')
loadingSym = pygame.image.load('loading.png')
uploadSym = pygame.transform.scale(uploadSym, (250,300))
loadingSym = pygame.transform.scale(loadingSym, (300,300))
rect = uploadSym.get_rect()
rect = rect.move((200,60))
rect = loadingSym.get_rect()
rect = rect.move((200,60))
firstSlide = False

def toggle_fullscreen():
    screen = pygame.display.get_surface()
    tmp = screen.convert()
    caption = pygame.display.get_caption()
    cursor = pygame.mouse.get_cursor()  
    w,h = screen.get_width(),screen.get_height()
    flags = screen.get_flags()
    bits = screen.get_bitsize()

    pygame.display.quit()
    pygame.display.init()

    screen = pygame.display.set_mode((w,h),flags^FULLSCREEN,bits)
    screen.blit(tmp,(0,0))
    pygame.display.set_caption(*caption)
    pygame.key.set_mods(0)
    pygame.mouse.set_cursor( *cursor )

    return screen

if __name__ == '__main__':
    SW,SH = 640,480
    screen = pygame.display.set_mode((SW,SH),pygame.NOFRAME)
    pygame.display.set_caption('Uploader')

    _quit = False
    while not _quit:
        for e in pygame.event.get():
            if (e.type is KEYDOWN and e.key == K_RETURN and (e.mod&(KMOD_LALT|KMOD_RALT)) != 0):
                toggle_fullscreen()
            elif e.type is QUIT:
                _quit = True
            elif e.type is KEYDOWN and e.key == K_ESCAPE:
                _quit = True

    mouse = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()  
    screen = pygame.display.get_surface()
    screen.fill([255, 255, 255])    

    #Click within the given area and upload begins  
    if 450 > mouse[0] > 250 and 360 > mouse[1] > 60 and click[0] == 1:
        firstSlide = True
    #T/F keeps png up for new slide
    elif firstSlide == True:
        loadRot = pygame.transform.rotate(loadingSym,0)
        screen.blit(loadRot, rect)

        #Upload test file to dropbox
        Upload = "/home/pi/Uploader/Dropbox-Uploader/dropbox_uploader.sh upload loading.png /"
        call ([Upload], shell=True)
        #Here I need an if statement that says, when upload done firstSlide = False
        #{
        #
        #
        #}

    else:
        screen.blit(uploadSym, rect)
    pygame.display.update()

【问题讨论】:

    标签: python-2.7 github pygame dropbox dropbox-sdk


    【解决方案1】:

    subprocess.call()function 返回命令的退出代码。所以call() 将(应该)在成功时返回0,在错误时返回非零值。

    所以:

    uploaded_ok = ( subprocess.call( Upload, shell=True) == 0 )
    

    会给你一个真/假的成功。

    注意:链接到 2.7 doco,因为 OP 标记了问题 Python2.7

    【讨论】:

    • 太棒了!做到了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多