到目前為止,高效編程已經介紹了很多圖形界面軟件,比如猜謎游戲、PDF閱讀器、貪吃蛇游戲、天氣查詢軟件、PDF閱讀器等。為了方便別人,我們經常將圖形界面打包成exe文件。 但如果我們只是為了自己方便使用的話,我們有必要把程序打包成幾十甚至上百兆的exe文件嗎? 不需要。 我們只需要能夠快速啟動圖形界面即可。 下面我將介紹幾種無需打開cmd窗口即可顯示圖形界面的方法。
獨立的方式
第一種方式是直接將py文件的后綴改為pyw,這樣系統就會自動調用.exe來執行你的程序。 這樣你就不用忍受漆黑的cmd窗口了,也不會因為關閉cmd窗口而關閉程序。
在此插入圖片描述
然后我們就可以在桌面上新建一個快捷方式,右鍵并在屬性中更改圖標,這樣我們就創建了圖形界面的快捷啟動方式。
批處理文件
第二種方法與第一種類似。 它也是通過.exe執行pyw文件,只不過被替換為bat批處理文件。
我們新建一個txt文件,在里面輸入這兩行代碼,然后保存為.bat文件。 start 后的第一個字符串表示 .exe 文件的位置,通常在您的安裝目錄下,與 .exe 在同一目錄中。 第二個字符代表你的pyw程序的地址,最好使用絕對地址。
@echo off start "D:\python372\pythonw.exe" "D:\\QQPCMgr\Desktop\Pytho高效編程\start.pyw"
同樣,您可以創建快捷方式并更改圖標。
啟動工具箱并執行
下面,我將演示如何使用PyQt5實現一個啟動工具箱。
主要實現了以下功能:
為了方便使用,我們可以將這個軟件打包成exe文件,或者重命名為pyw后綴,并創建快捷方式,方便使用。
要點一:
這個程序的核心思想是再開一個進程來執行py文件,但是此時程序的路徑是啟動管理器的路徑。 所以,如果你要打開的程序,比如“PDF閱讀器”,涉及到文件路徑,一定要使用絕對路徑。 如果您使用相對路徑,則必須在“PDF ”源代碼中添加以下有關該路徑的代碼行。 以下代碼行將當前路徑更改為“PDF 閱讀器”所在目錄。
os.chdir(os.path.dirname(os.path.realpath(__file__)))
關鍵點二:
我們用來管理流程。 首先創建一個對象并調用該方法。 方法可以在主進程之外打開一個新進程。 也就是說,如果我們打開或關閉“PDF閱讀器”,并不會影響啟動管理器的運行。
from PyQt5.QtCore import QProcess def open(self): fname = self.get_file() if fname: process = QProcess() process.startDetached('python', [fname])
要點三:
重寫按鈕類,支持右鍵菜單等一系列操作。
其中就是按鈕附帶的主程序。
class MyButton(QPushButton): def __init__(self, parent=None): super(MyButton, self).__init__(parent)
重寫以下函數:
需要保存的按鈕信息包括:按鈕名稱(您設置的應用程序名稱)、按鈕對應的地址、按鈕狀態(用于判斷按鈕是否有綁定地址,如果有則修改覆蓋名稱的操作)不支持)。
def initUi(self): # 右鍵菜單工具欄 addAction = QAction('添加', self) addAction.triggered.connect(self.add) delAction = QAction('刪除', self) delAction.triggered.connect(self.delete) self.addAction(addAction) self.addAction(delAction) self.clicked.connect(self.run)
要點四:
與數據庫交互與最后500行代碼實現PDF閱讀器的思路基本相同,增加了上下文管理器以提高代碼可讀性。
數據庫中保存的信息就是關鍵點3中提到的屬性。
def save2db(start): with DBManger(starter) as conn: conn.execute("INSERT INTO starter Values (?,?,?)", (start.fname, start.name, start.state)) conn.commit()
好了,重點就這些了,感興趣的朋友點擊以下鏈接獲取源碼: