Почему tkinter GUI не работает с использованием pythonw (чтобы скрыть командную строку)? - PullRequest
0 голосов
/ 07 мая 2020

Он работает, например, в IDLE и как файл .py, но когда я пытаюсь избавиться от командной строки с помощью расширения .pyw, GUI никогда не открывается. Я новичок в tkinter, поэтому я не знаю простого исправления, вот мой код (извините, что он немного неаккуратный, просто делаю это в качестве теста):

from pytube import YouTube
import tkinter as tk
import time
from os.path import expanduser

class YTdownloader(tk.Frame):
    def __init__(self, main=None):
        super().__init__(main)
        self.main = main
        self.pack()
        self.create()

    def create(self):
        self.text = tk.Label(self, text='Youtube URL').pack(side='top')
        url = ''
        self.enter = tk.Entry(self, textvariable=url, width=50, justify='center')
        self.enter.pack(side='top')
        self.done = tk.Button(self, text='Enter', command=self.downloader)
        self.done.pack(side='top')

    def downloader(self):
        try:
            vid = YouTube(self.enter.get())
            dv = vid.streams.first()
            dv.download(expanduser("~") + '\downloads')
            self.enter.delete(0, len(self.enter.get()))
            self.enter['fg'] = 'green'
            self.enter.insert(0, 'Success!')
            self.enter['state'] = 'readonly'
            screen.after(2000, self.normalize)
        except Exception as e:
            self.enter.delete(0, len(self.enter.get()))
            self.enter['fg'] = 'red'
            self.enter.insert(0, 'Video not found!')
            self.enter['state'] = 'readonly'
            screen.after(2000, self.normalize)

    def normalize(self):
        self.enter.config(state='normal', fg='black')
        self.enter.delete(0, len(self.enter.get()))



screen = tk.Tk()
screen.geometry("325x275")
screen.resizable(width=False, height=False)
screen.configure(bg='white')
img = tk.PhotoImage(file='rpb.png')
tk.Label(screen, image=img, bd=0).pack(side='top')
screen.title("Youtube MP4 Downloader")
inputS = tk.Frame(height=100, bd=1, relief='sunken')
inputS.pack(fill='x', padx=5, pady=5, side='bottom')
yt = YTdownloader(main=inputS)
yt.mainloop()
...