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("水印图片为:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值