首页 > 解决方案 > 现有代码的简单 tkinter gui

问题描述

我已经编写了一些代码(顺便说一句,我仍然是 python 和一般编程的菜鸟),我想制作一个 tkinter 窗口,它有一个文本框,将显示控制台中打印的所有内容和一个将要运行的按钮main() 函数。

我现有的代码:

import pafy
import os
from pydub import AudioSegment


def downloadSound(videourl):

    url = str(videourl)
    video = pafy.new(url) 

    bestaudio = video.getbestaudio() 
    print(video.title, video.author, video.length)
    bestaudio.download() 

def linklister(linklist):

    f = open('links.txt','r')

    for line in f:
        linklist.append(line.strip())

    f.close()    

def converter():
    dirlist = os.listdir()

    songlist = []

    for i in dirlist:
        if ".webm" in i:
            songlist.append(i)

    for i in songlist:

        sound = AudioSegment.from_file(i)

        imp3 = i.replace(".webm", ".mp3") 

        sound.export(imp3, format="mp3", bitrate="192k")

        print (i, "DONE")

def main():
    ytlinks = []

    linklister(ytlinks)

    for i in ytlinks:
        downloadSound(i)

    print ("downlad complete, proceeding to conversion")

    converter()




try:
    main()

except Exception as e:
    print (e)
    print ("OPPS")

else:
    pass    

标签: pythontkinter

解决方案


我尚未对此进行测试,但根据个人经验,此 tkinter 代码有效,我无法检查它是否适用于您的代码。如果此代码不起作用,请通过在我放置注释的位置添加打印来测试它。

import sys
import tkinter as tk
import pafy
import os
from pydub import AudioSegment


def downloadSound(videourl):

    url = str(videourl)
    video = pafy.new(url) 

    bestaudio = video.getbestaudio() 
    print(video.title, video.author, video.length)
    bestaudio.download() 

def linklister(linklist):

    f = open('links.txt','r')

    for line in f:
        linklist.append(line.strip())

    f.close()    

def converter():
    dirlist = os.listdir()

    songlist = []

    for i in dirlist:
        if ".webm" in i:
            songlist.append(i)

    for i in songlist:

        sound = AudioSegment.from_file(i)

        imp3 = i.replace(".webm", ".mp3") 

        sound.export(imp3, format="mp3", bitrate="192k")

        print (i, "DONE")

def main():
    ytlinks = []

    linklister(ytlinks)

    for i in ytlinks:
        downloadSound(i)

    print ("downlad complete, proceeding to conversion")




class TextOut(tk.Text):

    def write(self, s):
        self.insert(tk.CURRENT, s)

    def flush(self):
        pass


if __name__ == '__main__':
    root = tk.Tk()
    text = TextOut(root)
    sys.stdout = text
    text.pack(expand=True, fill=tk.BOTH)
    main()#here
    root.mainloop()

推荐阅读