為你的 Python 程序寫個啟動工具箱

2021-03-02 Python高效編程

到目前為止,公眾號已經介紹了不少圖形界面的軟體,比如猜數遊戲、PDF閱讀器、貪吃蛇遊戲、天氣查詢軟體等。為了方便他人使用,我們常把圖形界面打包成 exe 文件。但是如果我們只是為了自己使用方便的話,我們有必要把程序打包成幾十乃至上百兆的 exe 文件嗎?沒有必要。我們只要能夠快速啟動圖形界面就可以了。下面我將介紹幾種不需要打開 cmd 窗口就可以顯示圖形界面的方式。

Python 自帶的方式

第一種方式就是直接改 py 文件後綴為 pyw,這樣系統就會自動調用 pythonw.exe 來執行你的程序。這樣你就不必忍受黑乎乎的 cmd 窗口,也不會因為關閉了 cmd 窗口連帶著關閉了程序。

然後我們可以在桌面新建一個快捷方式,右鍵在屬性裡更改圖標,這樣我們就創建了一個圖形界面的快捷啟動方式。


批處理文件

第二種方式與第一種類似,也是通過 pythonw.exe 執行 pyw 文件,不過換成了 bat 批處理文件的形式,換湯不換藥。

我們新建一個 txt 文件,在其中輸入這樣兩行代碼,並將其保存為 .bat 文件。start 後面的第一個字符串表示你的pythonw.exe 文件所在位置,一般在你的 Python 安裝目錄下面,和 python.exe 在同一目錄。第二個字符表示你的 pyw 程序的地址,最好使用絕對地址。

@echo off
start  "D:\python372\pythonw.exe" "D:\\QQPCMgr\Desktop\Pytho高效編程\start.pyw" 

同樣,你可以創建快捷方式,並更改圖標。

用 Python 實現啟動工具箱

下面,我將演示如何使用 PyQt5 實現一個啟動工具箱。

主要實現了以下功能:

通過工具欄可以直接執行 python 程序

九宮格右鍵保存或者刪除快速啟動連結

九宮格左鍵點擊顯示圖形界面

為了方便使用,我們可以把這個軟體打包成 exe 文件,或者重命名為 pyw 後綴,並創建快捷方式便於使用。

關鍵點一:

這個程序的核心思想就是再開一個進程來執行 py 文件,但是此時程序的路徑為啟動管理器的路徑。所以說,如果你要打開的程序,比方說「PDF閱讀器」,涉及到了文件路徑,一定要使用絕對路徑。如果使用了相對路徑,必須在你的「PDF閱讀器」原始碼關於路徑的地方加上下面這行代碼。下面這行代碼把當前路徑更改為你的「PDF閱讀器」所在目錄。

os.chdir(os.path.dirname(os.path.realpath(__file__)))

關鍵點二:

我們使用 QProcess 來管理進程。首先創建一個 QProcess 對象,調用 startDetched 方法。startDetched 方法可以在主進程之外新開一個進程。也就是說,如果我們打開或者關閉 「PDF閱讀器」 ,並不影響啟動管理器的運行。

from PyQt5.QtCore import QProcess
def open(self):
    fname = self.get_file()
    if fname:
        process = QProcess()
        process.startDetached('python', [fname])

關鍵點三:

重寫 Button 按鍵類以支持右鍵菜單及一系列操作。

其中 parent 為按鈕依附的主程序。

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 閱讀器的思想基本相同,增加了上下文管理器,提高代碼可讀性。

資料庫保存的信息,就是關鍵點三中提到的 button 的屬性。

def save2db(start):
    with DBManger(starter) as conn:
        conn.execute("INSERT INTO starter Values (?,?,?)",
                (start.fname, start.name, start.state))
        conn.commit()

好了,關鍵點就這麼多了,感興趣的朋友可以在後臺回覆:2019412 來獲取原始碼,大家多多轉發支持。

你有什麼覺得不錯的 Python 教程,可以在下面的小程序留言分享。獨學而無友,則孤陋而寡聞。兩個人分享經驗,每個人都可以得到雙倍的經驗。

相關焦點

  • python應用(2):寫個python程序給自己用
    用python寫一個程序,然後在命令行上執行,看不到界面(UI),這種程序很常見了,叫命令行程序。
  • 為你的Python程序加密
    因此,我們需要為自己的原始碼進行加密,Python已經為我們提供了這樣一套工作機制。  第一種加密Python原始碼的方式,是將.py文件轉化為.pyc文件,但這種加密方式很容易被反編譯,因此實用性並不高。  第二種加密Python原始碼的方式,是將.py文件轉化為.so文件,這樣加密的可靠性非常高,無法被被人破解,也就很好地保護了原始碼。
  • 黑客必備的123個python工具(經典)
    ,可以將腳本注入到運行的進程中python-ptrace: Python語言寫成的應用ptrace的調試器(Linux,BSD和Darwin系統調用跟蹤進程)vdb / vtrace: vtrace是一個Python實現的跨平臺進程調試API,vdb是一個應用該API的調試器Androguard: 安卓應用程式的逆向分析工具Capstone:一個輕量級的多平臺多架構支持的反彙編框架
  • 這裡有123個黑客必備的Python工具!
    https://github.com/dloss/python-pentest-tools,本文中列舉了123個Python滲透測試工具,當然不僅於滲透~下面我們就開始吧~——————————如果你想參與漏洞研究、逆向工程和滲透,我建議你時候用Python語言。
  • 小丸工具箱
    小丸工具箱 是一款 Windows 下用來壓制 H264+AAC 視頻的圖形界面工具,如果你需要進行 ASS 字幕製作、視頻音頻壓制,那麼這樣一款圖形界面的工具集就非常適合
  • 用Python寫個在線Python的網站怎麼樣
    ,後來我發現一個事情,python裡面的subprocess算是一個很有趣的東西,他可以解釋python自己的代碼,之後就有個想法了,嘗試用subprocess去寫一個在線運行python的網站。那今天我們就來分享一下,如何使用python去寫一個在線python吧!首先,這個東西是結合python的flask框架來完成的。先介紹一下flask框架:Flask也被稱為 「microframework」 ,因為它使用簡單的核心,用 extension 增加其他功能。Flask沒有默認使用的資料庫、窗體驗證工具。
  • 為你的Web程序加個啟動畫面
    同樣,Javaer們一定對Eclipse的啟動畫面不會陌生。不只是IDE,很多桌面程序都會有這個Splash 窗口,在程序進行初始化時顯示。這方面做得最贊的非Adobe旗下的設計類軟體莫數了,畢竟是搞藝術出身的啊。博主從PS 8.0用起,每次升級新版本激動的不是新功能,首先是激動新的啟動畫面。下圖是最新CC版PS的Splash Screen。視覺效果震撼的一逼。張牙舞爪的,無出其右。
  • Python滲透測試工具合集
    :  Python 寫的使用 ptrace 的調試器  vdb/vtrace: vtrace 是用 Python 實現的跨平臺調試 API, vdb 是使用它的調試器  Androguard:  安卓應用程式的逆向分析工具  Capstone:  一個輕量級的多平臺多架構支持的反彙編框架。
  • 用 Python 寫了一個圖像文字識別 OCR 工具
    博主基於 PyQt + labelme + PaddleOCR 寫了一個桌面端的OCR工具,用於快速實現圖片中文本區域自動檢測+文本自動識別。識別效果如下圖所示:▲OCR工具識別效果所有框選區域為OCR算法自動檢測,右側列表有每個框對應的文字內容;點擊右側「識別結果」中的文本記錄,然後點擊「複製到剪貼板」即可複製該文本內容。
  • Python滲透測試工具都有哪些?
    : Python 寫的使用 ptrace 的調試器vdb/vtrace: vtrace 是用 Python 實現的跨平臺調試 API, vdb 是使用它的調試器Androguard: 安卓應用程式的逆向分析工具Capstone: 一個輕量級的多平臺多架構支持的反彙編框架。
  • 用Python寫個自動ssh登錄遠程伺服器的小工具
    所以先祝大家「五一快樂」很多時候我們喜歡在自己電腦的終端直接ssh連接Linux伺服器,而不喜歡使用那些有UI界面的工具區連接我們的伺服器。可是在終端使用ssh我們每次都需要輸入帳號和密碼,這也是一個煩惱,所以我們可以簡單的打造一個在Linux/Mac os運行的自動ssh登錄遠程伺服器的小工具來個GIF動畫示例下先:
  • 七夕用python給男朋友寫的小程序,感動哭了.
    七夕將至,給男朋友寫了個小程序,把他感動哭了,把我可累慘了。可樂我也不是程序媛專門敲代碼的,雖然也學過,但也僅局限於用pandas處理一下數據的程度,要寫一個界面並且能讓對方直接打開,有點超綱。但是經過5天的不懈努力,終於也算寫出來了,就長下面這個樣子,其實就是Python裡用tkinter模塊做的一個GUI圖形界面。
  • 用Python寫了一個圖像文字識別OCR工具
    博主基於 PyQt + labelme + PaddleOCR 寫了一個桌面端的OCR工具,用於快速實現圖片中文本區域自動檢測+文本自動識別。識別效果如下圖所示:▲OCR工具識別效果所有框選區域為OCR算法自動檢測,右側列表有每個框對應的文字內容;點擊右側「識別結果」中的文本記錄,然後點擊「複製到剪貼板」即可複製該文本內容。
  • 10 行 Python 代碼寫 1 個 USB 病毒
    於是我心想,能不能用python寫一個程序,讓它在後臺運行。每當有u盤插入的時候,就自動拷貝其中重要文件。如何判斷U盤的插入與否?剛剛我們寫了一個很簡易的腳本測試了一下這個想法的可行性,但是還是有問題。剛才之所以能把U盤中所有文件很快複製進去,是因為U盤中只有兩三個文件,大小不超過15M。
  • 123個 python黑客工具,再也不用問女朋友要手機密碼了
    、逆向工程和滲透,我建議你時候用Python語言。,可以將腳本注入到運行的進程中python-ptrace: Python語言寫成的應用ptrace的調試器(Linux,BSD和Darwin系統調用跟蹤進程)vdb / vtrace: vtrace是一個Python實現的跨平臺進程調試API,vdb是一個應用該API的調試器Androguard: 安卓應用程式的逆向分析工具
  • 總結了 90 條寫 Python 程序的建議
    ……你可以把擔心放在肚子裡去了。量化投資特訓營不僅僅是專業知識的科普,而且更貼近市場的實踐。不僅僅講解工具使用,更是培養你的【策略化思維】特訓營全面專業,由淺入深帶領學習,一環扣一環,課程節奏按照學員需求走,老師教的都是機構投資者用的方法和模式。
  • 快速掌握用python寫並行程序,乾貨滿滿
    目錄2.2 改用GPU處理計算密集型程序三、用python寫並行程序四、multiprocessing實戰小子今天想來談談「並行計算」,作為一個非科班人員,我為什麼去搗鼓這麼一個在科班裡也比較專業的問題了
  • VS Code寫Python的一點小技巧
    ● VS Code 除了 Python,還可以寫其他語言,PyCharm 不行。● VS Code 啟動速度比 PyCharm 快了不是一點點。VS Code 裡是不包括 Python 的,所以你首先得安裝一個 Python。安裝完 python 之後,我們可以用任何一個文本編輯工具開始寫 python 代碼,然後在 cmd 中運行代碼。
  • python-for-android:將Python程序打包為APK
    是Android上Python應用程式的封裝程序。您可以創建自己的Python程序,包括所需的模塊和依賴項與您自己的代碼捆綁在一起。功能包括:有關文檔和支持,請參閱:在2015年,這個工具被重寫,更新出更容易使用和擴展的界面。新的工具通過內置的pygame引導包含所有與distribute.sh和build.py相同的功能。舊版本地址安裝按照 快速入門說明 安裝並開始創建APK。
  • Python編程:認識IDLE,編寫保存運行第1個程序
    雙擊桌面上的IDLE (Python 3.8 64-bit)圖標(如圖1.1所示),或者在「開始」菜單裡選擇IDLE (Python 3.8 64-bit),即可啟動Pyhton。Python的常用窗口有2個,如圖1.2、1.3,默認安裝第1次打開顯示的是Shell窗口(圖1.2)。