91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么寫個python程序給自己用

發布時間:2021-11-26 11:48:08 來源:億速云 閱讀:183 作者:iii 欄目:大數據

本篇內容主要講解“怎么寫個python程序給自己用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么寫個python程序給自己用”吧!

界面也是一個工具,所以,有沒有界面工具庫呢?必須得有,而且有很多個,你搜索“python界面庫”就可以看到很多這方面的介紹,而我要介紹的,是python最早就有的tkinter,通過它來實現界面程序。

tkinter內置在python中,所以不用再安裝,直接import進來使用就是了。

(1)TTS的GUI程序

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執行后主界面就會消失,這不是預期的事情。

運行起來后的一個截圖是這樣的: 怎么寫個python程序給自己用

程序弄好了,先不管它丑不丑吧,至少功能可以用了。如果是自己使用的話,那怎么樣才能快速地啟用這個程序呢?

(2)結合alfred來調用程序

之前介紹過怎么在mac系統上快速地切換或啟動一個程序,使用的工具就是alfred,這是一個超級好用的工具。那現在再次使用alfred來啟用剛才寫的程序。

關于alfred的安裝或使用,網上很多介紹,我之前介紹“mac環境與工具”時也有介紹,但是,這里有一個地方要注意:手動用終端執行上面的python程序是可以正常運作的,但一旦通過alfred執行python程序,那在AudioSegment.form_file時就會異常,最終export不出語音文件,就算直接在python代碼中執行ffmpeg命令也一樣會失敗,判斷是,alfred執行python腳本的情況下,AudioSegment(包括它使用的ffmpeg)沒有權限訪問文件。 考慮到這種情況,就要變通一下了:讓alfred打開一個新的終端,并且讓這個終端執行python程序--按這個思路來制作工具。

1、在alfred上新建一個“Script Filter”: 怎么寫個python程序給自己用

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、執行一下,效果是這樣的: 怎么寫個python程序給自己用

最后的那個out.mp3就是最終想要的文件

對應的文本是這樣的:

瑤草一何碧,春入武陵溪。溪上桃花無數,花上有黃鸝,我欲穿花尋路,直入白云深處,浩氣展虹霓。只恐花深里,紅露濕人衣。坐玉石,欹玉枕,拂金徽。謫仙何處,天人伴我白螺杯。我為靈芝仙草,不為朱唇丹臉,長嘯亦何為!醉舞下山去,明月逐人歸。——宋.黃庭堅《水調歌頭.游覽》

到此,相信大家對“怎么寫個python程序給自己用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

唐山市| 金山区| 郎溪县| 天门市| 名山县| 泌阳县| 赞皇县| 昭通市| 双鸭山市| 太保市| 府谷县| 聊城市| 阳原县| 永兴县| 玛纳斯县| 沅陵县| 重庆市| 阿鲁科尔沁旗| 锦屏县| 通州区| 枣强县| 金坛市| 准格尔旗| 邹城市| 灌阳县| 万载县| 南安市| 牙克石市| 沛县| 门源| 克拉玛依市| 陈巴尔虎旗| 金平| 虞城县| 勃利县| 中西区| 西林县| 秦皇岛市| 松潘县| 肇源县| 西充县|