我正在创建将视频上传到服务器的应用,因此我获得了一个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!)