您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么寫個python程序給自己用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么寫個python程序給自己用”吧!
界面也是一個工具,所以,有沒有界面工具庫呢?必須得有,而且有很多個,你搜索“python界面庫”就可以看到很多這方面的介紹,而我要介紹的,是python最早就有的tkinter,通過它來實現界面程序。
tkinter內置在python中,所以不用再安裝,直接import進來使用就是了。
from tkinter import *
import tkinter.messagebox as msgbox
import tkinter.filedialog as filedlg
import os
import pyttsx3
from pydub import AudioSegment
import threading
txtfile = ""
window = Tk()
pathlabel = Label(window, text="...")
def fileFunc():
default_dir = "文件路徑"
global txtfile
global pathlabel
txtfile = filedlg.askopenfilename(title="選擇文件", initialdir=(os.path.expanduser(default_dir)))
(path, fname) = os.path.split(txtfile)
pathlabel["text"] = fname
def converThreadFunc(content):
outfile = "out.aiff"
tts = pyttsx3.init()
tts.save_to_file(content, outfile)
tts.runAndWait()
def convertFunc():
if len(txtfile) == 0:
msgbox.showinfo("提示", "請先選擇文本文件")
return
content = open(txtfile, "r").read()
if len(content)==0:
msgbox.showinfo("提示", "文本文件沒有內容,轉換終止,不輸出語音文件")
return
t1 = threading.Thread(target=converThreadFunc, args=(content,))
t1.start()
t1.join()
outfile = "out.aiff"
AudioSegment.from_file(outfile).export("out.mp3", format="mp3")
msgbox.showinfo("提示", "轉換成功,程序目錄下的out.mp3就是最終的語音文件:%s" % os.getcwd())
os.system("open '%s'" % os.getcwd())
def main():
window.title("TTS-文本轉換語音")
window.geometry("320x320+100+100")
filebtn = Button(window, text="選擇文本文件", command=fileFunc)
convertbtn = Button(window, text="轉換成語音", command=convertFunc)
filebtn.place(x=10, y=10)
pathlabel.place(x=10, y=40)
convertbtn.place(x=10, y=80)
window.mainloop()
if __name__=="__main__":
main()
抓重點來看。
1、使用了tkinter的控件,messagebox是提示框,filedialog是文件選擇控件,再比如Button跟Label,這些都是常用的控件,它們的創建跟屬性設置,也有不少詳情,你可以搜索來了解。
2、這里用place方法來設置控件的位置,類似的方法還有pack、grid等。
3、業務邏輯上,重點是處理兩個按鈕的點擊事件,也就是那兩個def出來的xxFunc函數了。
4、文本轉語音的處理,使用了上節介紹的代碼,也沒有什么神秘的。
5、pyttsx3.engine的函數runAndWait在執行完后會結束當前線程,所以,不能在主線程即UI線程來執行這個函數,而要啟動一個thread來執行它,否則runAndWait執行后主界面就會消失,這不是預期的事情。
運行起來后的一個截圖是這樣的:
程序弄好了,先不管它丑不丑吧,至少功能可以用了。如果是自己使用的話,那怎么樣才能快速地啟用這個程序呢?
之前介紹過怎么在mac系統上快速地切換或啟動一個程序,使用的工具就是alfred,這是一個超級好用的工具。那現在再次使用alfred來啟用剛才寫的程序。
關于alfred的安裝或使用,網上很多介紹,我之前介紹“mac環境與工具”時也有介紹,但是,這里有一個地方要注意:手動用終端執行上面的python程序是可以正常運作的,但一旦通過alfred執行python程序,那在AudioSegment.form_file時就會異常,最終export不出語音文件,就算直接在python代碼中執行ffmpeg命令也一樣會失敗,判斷是,alfred執行python腳本的情況下,AudioSegment(包括它使用的ffmpeg)沒有權限訪問文件。 考慮到這種情況,就要變通一下了:讓alfred打開一個新的終端,并且讓這個終端執行python程序--按這個思路來制作工具。
1、在alfred上新建一個“Script Filter”:
2、新的terminal會執行cmd.sh腳本,這個腳本是這樣的:
cd '/Users/freejet/Library/Application Support/Alfred 3/Alfred.alfredpreferences/workflows/user.workflow.4D91A493-39F3-433C-9D33-65917236A6F5'
source ~/Desktop/pyenv/bin/activate
python3 demo_gui.py
先是cd到這個alfred腳本即workflow所在的目錄,這個目錄路徑你可以通過右鍵workflow找到,然后激活python3的環境(第一節介紹到的內容),最后執行python程序也就是上面介紹的“TTS的GUI程序”。
把這個cmd.sh放到當前workflow的目錄中,這樣alfred才能找到它。
3、執行一下,效果是這樣的:
最后的那個out.mp3就是最終想要的文件
對應的文本是這樣的:
瑤草一何碧,春入武陵溪。溪上桃花無數,花上有黃鸝,我欲穿花尋路,直入白云深處,浩氣展虹霓。只恐花深里,紅露濕人衣。坐玉石,欹玉枕,拂金徽。謫仙何處,天人伴我白螺杯。我為靈芝仙草,不為朱唇丹臉,長嘯亦何為!醉舞下山去,明月逐人歸。——宋.黃庭堅《水調歌頭.游覽》
到此,相信大家對“怎么寫個python程序給自己用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。