【发布时间】:2018-08-01 12:36:43
【问题描述】:
为了了解有关 Python 和 tkinter 的更多信息,我正在编写一个 YouTube 下载器。我有一个单独的窗口,您可以在其中添加链接并按下一个按钮,该按钮应在我的主窗口中显示缩略图和标题。现在我刚刚得到了标题。
函数如下:
def display_yt_video(self, title):
thumbnail = tk.PhotoImage(file='thumbnail.gif')
photo_label = tk.Label(root, image=thumbnail)
photo_label.pack()
yt_label = tk.Label(gui.bottomFrame, text=title)
yt_label.pack()
似乎他找不到正确的“根”对象,没有显示错误。我尝试在多个框架中使用窗口“根”。我设法以这种方式在另一个程序中打开了这张图片。
这是我的精简代码:
from pytube import YouTube
import tkinter as tk
import urllib.request
root = tk.Tk()
class Gui:
def add_url_window(self):
ck_button = tk.Button(url_topframe, text='Add to Queue')
ck_button.bind('<Button-1>', dl.check_url)
ck_button.grid(row=2, column=2, padx=10)
class Downloader():
def check_url(self, event):
#try:
url = self.retrieve_input()
thumbnail_url = YouTube(url).thumbnail_url
urllib.request.urlretrieve(thumbnail_url, "thumbnail.gif")
yt_title = YouTube(url).title
print('done')
dl.display_yt_video(yt_title)
def display_yt_video(self, title):
thumbnail = tk.PhotoImage(file='thumbnail.gif')
photo_label = tk.Label(root, image=thumbnail)
photo_label.pack()
yt_label = tk.Label(gui.bottomFrame, text=title)
yt_label.pack()
dl = Downloader(root)
gui = Gui()
root = tk.Tk()
menu = tk.Menu()
root.config(menu=menu)
gui.build_window()
root.mainloop(
【问题讨论】:
-
您发布的代码不可能工作,您已经创建了两个不同的根窗口,您在
root.mainloop之后错过了一个大括号,您将root传递给Downloader类,尽管它没有构造函数所以不能接受您调用未定义函数的任何参数 (gui.build_window) 您需要先提供一个更好的示例,然后才能帮助您。
标签: tkinter python-3.6 pytube