本文介绍了Tkinter 异常回调的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我仍在开发我的小 Tkinter 项目,这是一个简单的 youtube 视频下载器每次我尝试使用 tkinter 窗口时,它都会给我一个异常回调和值错误
Tkinter 回调中的异常回溯(最近一次调用最后一次):文件C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py",第1705行,在__call__返回 self.func(*args)文件file.py",第 7 行,在 downloadVidyt = YouTube(str(string))文件C:\Users\shaswat\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytube\__main__.py",第 92 行,在 __init__self.descramble()文件C:\Users\shaswat\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytube\__main__.py",第 140 行,解扰apply_signature(self.player_config_args,fmt,self.js)文件C:\Users\shaswat\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytube\extract.py",第 225 行,在 apply_signature密码 = 密码(js=js)文件C:\Users\shaswat\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytube\cipher.py",第 31 行,在 __init__var, _ = self.transform_plan[0].split(".")ValueError:解包的值太多(预期为 2)
这是代码
将 tkinter 作为 tk 导入从 pytube 导入 YouTube定义下载视频():全球E1字符串 =E1.get()yt = YouTube(str(string))视频 = yt.get_videos()s=1对于视频中的 v:打印(str(s) + '.' + str(v))s +=1n=int(input(输入你的选择"))视频=视频[n-1]目的地=str(输入(输入您的目的地"))视频下载(目的地)打印(yt.filename+\n已下载")根=tk.Tk()w=tk.Label(root,text=Youtube 下载器")w.pack()E1=tk.Entry(root,bd=5)E1.pack(side=tk.TOP)button=tk.Button(root,text=下载",fg=红色",command=downloadVid)button.pack(side=tk.BOTTOM)root.mainloop() 解决方案
编辑 cipher.py 中的一行,显示在 github 链接中为我解决了这个问题.
I'm still working on my little Tkinter project which is simple youtube video downloaderEvery time i am trying to use the tkinter window it is giving me an exception callback and value error
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "file.py", line 7, in downloadVid
yt = YouTube(str(string))
File "C:\Users\shaswat\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytube\__main__.py", line 92, in __init__
self.descramble()
File "C:\Users\shaswat\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytube\__main__.py", line 140, in descramble
apply_signature(self.player_config_args, fmt, self.js)
File "C:\Users\shaswat\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytube\extract.py", line 225, in apply_signature
cipher = Cipher(js=js)
File "C:\Users\shaswat\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytube\cipher.py", line 31, in __init__
var, _ = self.transform_plan[0].split(".")
ValueError: too many values to unpack (expected 2)
Here is the code
import tkinter as tk
from pytube import YouTube
def downloadVid():
global E1
string =E1.get()
yt = YouTube(str(string))
videos = yt.get_videos()
s=1
for v in videos:
print(str(s) + '.' + str(v))
s +=1
n=int(input("Enter your choice"))
vid=videos[n-1]
destination=str(input("Enter your destination"))
vid.download(destination)
print(yt.filename+"\n Ha been downloaded")
root=tk.Tk()
w=tk.Label(root,text="Youtube Downloader")
w.pack()
E1=tk.Entry(root,bd=5)
E1.pack(side=tk.TOP)
button=tk.Button(root,text="Download",fg="red",command=downloadVid )
button.pack(side=tk.BOTTOM)
root.mainloop()
解决方案
Editing a line in the cipher.py, shown in the github link solved this issue for me.
这篇关于Tkinter 异常回调的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!