循环Python导入冻结Tkinter app

时间:2015-09-01 11:11:52

标签: python python-2.7 tkinter progress-bar ttk

我正在创建将视频上传到服务器的应用,因此我获得了一个START.py文件,该文件生成Tkinter窗口并处理所有Tkinter小部件和另一个(由START.py文件运行) ),upload_video_to_server.py,显然,它将视频上传到服务器。我使用线程执行此操作,因此应用程序在上传时不会冻结,因此我想制作有效的ttk.ProgressBar来跟踪上传。我设法从upload_video_to_server.py获取所需的信息(文件大小和已上传的大小),但问题是ProgressBar在START.py内。在谷歌搜索和许多尝试后,我看到循环导入要求导入内部函数由于各种原因,所以我这样做:

START.py

def chProgressBarValue(value):
    progress().prog_bar["value"] = value
    print "ProgBarValueChanged to: ", prog_bar["value"]

def chProgressBarMax(max):
    progress().prog_bar["maximum"] = max

def progress():
    global prog_bar
    print "prog bar is being made"
    prog_bar = ttk.Progressbar(
            app, orient="horizontal",
            length=200, mode="determinate",
            value=5,
            max=15
            )
    prog_bar.pack(side=TOP)
    prog_bar.place(x=380, y=395)

upload_video_to_server.py

def printTotals(transferred, toBeTransferred):
    print "Transferred: {0}\tOut of: {1}".format(transferred,     toBeTransferred)
    import START
    START.chProgressBarMax(toBeTransferred)
    START.chProgressBarValue(transferred)

但是在首次打印传输的数据信息后,新的Tkinter窗口会显示并冻结/崩溃整个应用程序(上传就像魅力而不导入START.py)。这是一张日志+问题的图片(第二个空的Tkinter窗口SHOULDN' T!)

PIC

0 个答案:

没有答案