Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何确定tkinter中进度条的值(它只在中间结束)_Python_Tkinter_Python 3.7 - Fatal编程技术网

Python 如何确定tkinter中进度条的值(它只在中间结束)

Python 如何确定tkinter中进度条的值(它只在中间结束),python,tkinter,python-3.7,Python,Tkinter,Python 3.7,我在将值更新到进度条时遇到问题,当我运行程序时,进度条卡在中间(只需单击下面的“problem Here”按钮,它解释了我的意思),代码成功运行,没有任何错误 以下是我使用的代码: self.bytes = 0 self.max_bytes = 0 self.progressbarframe = Frame(self.frameoutput, bg=self.bgcolor) self.progressbarframe.place(relx=0.355,rely=0.78,relwidth=0

我在将值更新到进度条时遇到问题,当我运行程序时,进度条卡在中间(只需单击下面的“problem Here”按钮,它解释了我的意思),代码成功运行,没有任何错误

以下是我使用的代码:

self.bytes = 0
self.max_bytes = 0

self.progressbarframe = Frame(self.frameoutput, bg=self.bgcolor)
self.progressbarframe.place(relx=0.355,rely=0.78,relwidth=0.605)

self.progressbar = Progressbar(self.progressbarframe, orient=HORIZONTAL, mode='determinate')
self.progressbar.pack(fill=X)

def progress(curvalue, maxval):
    self.progressbar['value'] = curvalue
    self.progressbar['maximum'] = maxval

def cb(total, recvd, ratio, rate, eta):
    self.bytes += recvd
    self.max_bytes += total
    if self.bytes <= self.max_bytes:
        self.progressbar.after(50, progress(self.bytes, self.max_bytes))
        self.progressbar.update()

self.videos = pafy.new(str(self.entryyturl.get()))
self.videodownload = self.videos.allstreams
self.videodownload = self.videodownload[-int(self.data['mediatypes'].index(self.resolutionbox.get()))-1]
self.videodownload.download(quiet=True, filepath='download/{}.{}'.format(self.videodownload.title, self.videodownload.extension), callback=cb)
self.bytes=0
self.max_字节=0
self.progressbarframe=Frame(self.frameoutput,bg=self.bgcolor)
self.progressbarframe.place(relx=0.355,rely=0.78,relwidth=0.605)
self.progressbar=progressbar(self.progressbarframe,orient=水平,mode='determinate')
self.progressbar.pack(填充=X)
def进度(曲线值,最大值):
self.progressbar['value']=曲线值
self.progressbar['maximum']=maxval
def cb(总、回收、比率、速率、预计到达时间):
self.bytes+=recvd
self.max_字节+=总计

如果self.bytes可能在不仔细查看代码的情况下复制,请尝试将此更改:
self.progressbar.after(50,progress(self.bytes,self.max_bytes))
更改为:
self.progressbar.after(50,lambda:progress(self.bytes,self.max_bytes))
添加
print(curvalue,maxval)
以查看您得到了什么。