您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“怎么寫個python程序給自己用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么寫個python程序給自己用”吧!
界面也是一個工具,所以,有沒有界面工具庫呢?必須得有,而且有很多個,你搜索“python界面庫”就可以看到很多這方面的介紹,而我要介紹的,是python最早就有的tkinter,通過它來實現(xiàn)界面程序。
tkinter內(nèi)置在python中,所以不用再安裝,直接import進(jìn)來使用就是了。
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("提示", "文本文件沒有內(nèi)容,轉(zhuǎn)換終止,不輸出語音文件")
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("提示", "轉(zhuǎn)換成功,程序目錄下的out.mp3就是最終的語音文件:%s" % os.getcwd())
os.system("open '%s'" % os.getcwd())
def main():
window.title("TTS-文本轉(zhuǎn)換語音")
window.geometry("320x320+100+100")
filebtn = Button(window, text="選擇文本文件", command=fileFunc)
convertbtn = Button(window, text="轉(zhuǎn)換成語音", 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()
抓重點(diǎn)來看。
1、使用了tkinter的控件,messagebox是提示框,filedialog是文件選擇控件,再比如Button跟Label,這些都是常用的控件,它們的創(chuàng)建跟屬性設(shè)置,也有不少詳情,你可以搜索來了解。
2、這里用place方法來設(shè)置控件的位置,類似的方法還有pack、grid等。
3、業(yè)務(wù)邏輯上,重點(diǎn)是處理兩個按鈕的點(diǎn)擊事件,也就是那兩個def出來的xxFunc函數(shù)了。
4、文本轉(zhuǎn)語音的處理,使用了上節(jié)介紹的代碼,也沒有什么神秘的。
5、pyttsx3.engine的函數(shù)runAndWait在執(zhí)行完后會結(jié)束當(dāng)前線程,所以,不能在主線程即UI線程來執(zhí)行這個函數(shù),而要啟動一個thread來執(zhí)行它,否則runAndWait執(zhí)行后主界面就會消失,這不是預(yù)期的事情。
運(yùn)行起來后的一個截圖是這樣的:
程序弄好了,先不管它丑不丑吧,至少功能可以用了。如果是自己使用的話,那怎么樣才能快速地啟用這個程序呢?
之前介紹過怎么在mac系統(tǒng)上快速地切換或啟動一個程序,使用的工具就是alfred,這是一個超級好用的工具。那現(xiàn)在再次使用alfred來啟用剛才寫的程序。
關(guān)于alfred的安裝或使用,網(wǎng)上很多介紹,我之前介紹“mac環(huán)境與工具”時也有介紹,但是,這里有一個地方要注意:手動用終端執(zhí)行上面的python程序是可以正常運(yùn)作的,但一旦通過alfred執(zhí)行python程序,那在AudioSegment.form_file時就會異常,最終export不出語音文件,就算直接在python代碼中執(zhí)行ffmpeg命令也一樣會失敗,判斷是,alfred執(zhí)行python腳本的情況下,AudioSegment(包括它使用的ffmpeg)沒有權(quán)限訪問文件。 考慮到這種情況,就要變通一下了:讓alfred打開一個新的終端,并且讓這個終端執(zhí)行python程序--按這個思路來制作工具。
1、在alfred上新建一個“Script Filter”:
2、新的terminal會執(zhí)行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的環(huán)境(第一節(jié)介紹到的內(nèi)容),最后執(zhí)行python程序也就是上面介紹的“TTS的GUI程序”。
把這個cmd.sh放到當(dāng)前workflow的目錄中,這樣alfred才能找到它。
3、執(zhí)行一下,效果是這樣的:
最后的那個out.mp3就是最終想要的文件
對應(yīng)的文本是這樣的:
瑤草一何碧,春入武陵溪。溪上桃花無數(shù),花上有黃鸝,我欲穿花尋路,直入白云深處,浩氣展虹霓。只恐花深里,紅露濕人衣。坐玉石,欹玉枕,拂金徽。謫仙何處,天人伴我白螺杯。我為靈芝仙草,不為朱唇丹臉,長嘯亦何為!醉舞下山去,明月逐人歸。——宋.黃庭堅《水調(diào)歌頭.游覽》
到此,相信大家對“怎么寫個python程序給自己用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。