1. 程式人生 > 其它 >python四則運算程式 視窗編寫_使用Python編寫批量新增圖片水印程式:二、桌面客戶端...

python四則運算程式 視窗編寫_使用Python編寫批量新增圖片水印程式:二、桌面客戶端...

技術標籤:python四則運算程式 視窗編寫

在上一篇文章《使用Python編寫批量新增圖片水印程式:一、程式碼方案》中,我們介紹了使用Python為圖片批量新增影象水印的方法,今天,我們繼續優化這個小工具,藉助QT for Python模組(PyQt5、PySide2)將其製作為一個桌面客戶端程式。

一、編寫基礎介面

首先,我們來為這個新增圖片水印的桌面客戶端程式編寫一個基礎的圖形介面。其包含:

  • 一個顯示圖片所在路徑的文字輸入框;
  • 一個用於選擇圖片所在目錄的按鈕;
  • 一個顯示水印圖片路徑的文字輸入框;
  • 一個用於選擇水印圖片的按鈕;
  • 一個顯示圖片儲存目錄的文字輸入框;
  • 一個用於選擇圖片儲存目錄的按鈕;
  • 一個水印放置位置的下拉框;
  • 一個用於批量新增圖片水印的按鈕;

上述的模組我們通過QLineEdit()模組實現輸入框、QPushButton()實現按鈕、QComboBox()實現下拉框。同時,我們使用網格佈局QGridLayout()對模組進行佈局。

其最終的圖形介面如下圖所示:

0ca4b2c3f230ad341adbca2010a99e41.png

這個圖形介面的建立程式碼如下圖所示:

class MainApp(QtWidgets.QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("一鍵圖片水印") # 視窗標題 self.setFixedSize(350,160) # 設定視窗高和寬 self.main_widget = QtWidgets.QWidget() # 視窗主控制元件 self.main_layout = QtWidgets.QGridLayout() # 視窗主控制元件佈局 self.main_widget.setLayout(self.main_layout) self.folder_input = QtWidgets.QLineEdit() self.folder_input.setReadOnly(True) self.folder_btn = QtWidgets.QPushButton("選擇資料夾") self.wm_input = QtWidgets.QLineEdit() self.wm_input.setReadOnly(True) self.wm_btn = QtWidgets.QPushButton("選擇水印圖片") self.save_input = QtWidgets.QLineEdit() self.save_input.setReadOnly(True) self.save_btn = QtWidgets.QPushButton("儲存目錄") self.position_label = QtWidgets.QLabel('水印位置(州的先生zmister.com):') self.position_box = QtWidgets.QComboBox() self.position_box.addItem("左上") self.position_box.addItem("左下") self.position_box.addItem("右上") self.position_box.addItem("右下") self.position_box.addItem("居中") self.submit_btn = QtWidgets.QPushButton("生成圖片") self.main_layout.addWidget(self.folder_input,0,0,1,1) self.main_layout.addWidget(self.folder_btn, 0, 1, 1, 1) self.main_layout.addWidget(self.wm_input, 1, 0, 1, 1) self.main_layout.addWidget(self.wm_btn, 1, 1, 1, 1) self.main_layout.addWidget(self.save_input,2,0,1,1) self.main_layout.addWidget(self.save_btn,2,1,1,1) self.main_layout.addWidget(self.position_label, 3, 0, 1, 1) self.main_layout.addWidget(self.position_box, 3, 1, 1, 1) self.main_layout.addWidget(self.submit_btn, 4, 0, 1, 2) self.setCentralWidget(self.main_widget) # 設定視窗初始化控制元件

這樣,我們的基礎介面已經建立好了,下面我們來對幾個按鈕的事件進行響應。

二、實現圖片選取

在圖形介面中,我們設定了4個按鈕,其中3個用於目錄和檔案的選擇,一個用於最終批量處理圖片。在3個用於目錄和檔案選擇的按鈕中,其中:

  • 第一個按鈕用於選擇圖片所在的資料夾;
  • 第二個按鈕用於選擇圖片水印;
  • 第三個按鈕用於選擇新圖片儲存的目錄;

我們通過QFileDialog.getExistingDirectory()來選擇資料夾、通過QFileDialog.getOpenFileName()來選擇檔案。最終,我們在MainApp()中新建3個方法:

# 選擇圖片資料夾def select_folder(self): file = str(QtWidgets.QFileDialog.getExistingDirectory(self, "選擇資料夾")) print('資料夾為:',file) if file != '': self.folder_input.setText(file)# 選擇水印圖片def select_wm_img(self): file,_ = QtWidgets.QFileDialog.getOpenFileName( self,'選擇水印圖片','','Images (*.png *.xpm *.jpg)' ) print("水印圖片為: