├── .gitignore
├── LICENSE
├── README.md
├── com
├── __init__.py
└── zeketian
│ ├── __init__.py
│ └── imageutil
│ ├── Main.py
│ ├── __init__.py
│ ├── control
│ ├── BasicProcessingUtil.py
│ └── __init__.py
│ └── ui
│ ├── ColorCatcher.py
│ ├── CustomDialog.py
│ ├── CustomLabel.py
│ ├── MainUI.py
│ ├── UiColorCatcher.py
│ ├── __init__.py
│ ├── edit_image.png
│ ├── font.ttf
│ └── rotate.png
├── compress-dialog.py
├── compress-dialog.ui
├── edit_image.png
├── filter-dialog.py
├── filter-dialog.ui
├── main-ui.py
├── main-ui.ui
├── orc-dialog.py
├── orc-dialog.ui
├── resource
├── lenna.png
└── 界面运行图.png
├── watermark-dialog.py
└── watermark-dialog.ui
/.gitignore:
--------------------------------------------------------------------------------
1 | # PyCharm
2 | .idea/
3 |
4 | # Byte-compiled / optimized / DLL files
5 | __pycache__/
6 | *.py[cod]
7 | *$py.class
8 |
9 | # C extensions
10 | *.so
11 |
12 | # Distribution / packaging
13 | .Python
14 | build/
15 | develop-eggs/
16 | dist/
17 | downloads/
18 | eggs/
19 | .eggs/
20 | lib/
21 | lib64/
22 | parts/
23 | sdist/
24 | var/
25 | wheels/
26 | pip-wheel-metadata/
27 | share/python-wheels/
28 | *.egg-info/
29 | .installed.cfg
30 | *.egg
31 | MANIFEST
32 |
33 | # PyInstaller
34 | # Usually these files are written by a python script from a template
35 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
36 | *.manifest
37 | *.spec
38 |
39 | # Installer logs
40 | pip-log.txt
41 | pip-delete-this-directory.txt
42 |
43 | # Unit test / coverage reports
44 | htmlcov/
45 | .tox/
46 | .nox/
47 | .coverage
48 | .coverage.*
49 | .cache
50 | nosetests.xml
51 | coverage.xml
52 | *.cover
53 | *.py,cover
54 | .hypothesis/
55 | .pytest_cache/
56 |
57 | # Translations
58 | *.mo
59 | *.pot
60 |
61 | # Django stuff:
62 | *.log
63 | local_settings.py
64 | db.sqlite3
65 | db.sqlite3-journal
66 |
67 | # Flask stuff:
68 | instance/
69 | .webassets-cache
70 |
71 | # Scrapy stuff:
72 | .scrapy
73 |
74 | # Sphinx documentation
75 | docs/_build/
76 |
77 | # PyBuilder
78 | target/
79 |
80 | # Jupyter Notebook
81 | .ipynb_checkpoints
82 |
83 | # IPython
84 | profile_default/
85 | ipython_config.py
86 |
87 | # pyenv
88 | .python-version
89 |
90 | # pipenv
91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
94 | # install all needed dependencies.
95 | #Pipfile.lock
96 |
97 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
98 | __pypackages__/
99 |
100 | # Celery stuff
101 | celerybeat-schedule
102 | celerybeat.pid
103 |
104 | # SageMath parsed files
105 | *.sage.py
106 |
107 | # Environments
108 | .env
109 | .venv
110 | env/
111 | venv/
112 | ENV/
113 | env.bak/
114 | venv.bak/
115 |
116 | # Spyder project settings
117 | .spyderproject
118 | .spyproject
119 |
120 | # Rope project settings
121 | .ropeproject
122 |
123 | # mkdocs documentation
124 | /site
125 |
126 | # mypy
127 | .mypy_cache/
128 | .dmypy.json
129 | dmypy.json
130 |
131 | # Pyre type checker
132 | .pyre/
133 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ImageUtils
2 | 本项目是计算机视觉课程上的一个练手项目,是基于 OpenCV 、PyQt 编写的一个可视化的图片处理软件。该软件能够对图片进行一些基本的处理,提供的功能包括:图片裁剪、亮度调整、添加水印、图片模糊、图片压缩、添加滤镜、图片加密、图片解密、OCR、取色。
3 |
4 |
5 |
6 | ## 1. 界面设计
7 |
8 | 软件界面主要分为三个区域,如下图所示。
9 |
10 | 软件界面的上面部方,分别为软件图标、菜单区;在下面部分中,左侧为功能区,右侧为图片显示区域。当用户在使用部分功能时,软件的右上角区域会出现图中所示的 “确定” 、“取消” 按钮。只有当用户点击 “确定” 按钮后,相应的功能才会真正生效。
11 |
12 |
13 |
14 | ## 2. 功能介绍
15 |
16 | 软件功能的具体介绍如下:
17 |
18 | - **图片裁剪**
19 |
20 | 用户在打开图片后,点击功能区的 “裁剪” ,然后可以在图片显示区域内,用矩形选出待裁剪的区域,之后点击右上角的 “确定” 即可。
21 |
22 | - **亮度调整**
23 |
24 | 点击功能区的 “亮度” ,然后会显示一个滑动条。用户滑动滑动条,可以将图片的亮度调亮或调暗,当用户调到满意的亮度后,点击右上角的 “确定” 即可。
25 |
26 | - **添加水印**
27 |
28 | 点击功能区的 “水印” ,然后会弹出一个对话框。用户可以在对话框内输入水印的文本内容,支持输入中文,同时可从 “左上角、右上角、中间、左下角、右下角” 五个选项中选择水印的位置。之后,点击对话框的 “OK” 按钮,添加水印。最后,点击右上角的 “确定” 即可。
29 |
30 | - **图片模糊**
31 |
32 | 点击功能区的 “模糊” ,然后可以在图片显示区域内,用矩形选出待模糊的区域,之后点击右上角的 “确定” 即可。
33 |
34 | - **图片压缩**
35 |
36 | 点击功能区的 “压缩” ,然后会弹出一个对话框。用户在对话框内输入目标图片的宽度、高度,之后点击对话框的 “OK” 按钮即可将图片压缩到指定大小。
37 |
38 | - **添加滤镜**
39 |
40 | 点击功能区的 “滤镜” ,然后会弹出一个对话框。用户可以在对话框中选择 “黑白、素描、浮雕、怀旧” 四种预设的滤镜效果,选择完滤镜效果后,点击对话框的 “OK” 按钮,添加滤镜效果。最后,点击右上角的 “确定” 按钮后,滤镜效果真正生效。
41 |
42 | - **图片加密**
43 |
44 | 点击功能区的 “加密” ,然后会弹出一个文件对话框,让用户选择密钥的保存位置。用户选择文件的保存位置后,图片便会被加密,同时在相应的目录下生成一个名为 “img_key” 的密钥文件。
45 |
46 | - **图片解密**
47 |
48 | 点击功能区的 “解密” ,然后会弹出一个文件对话框,让用户选择密钥文件。如果选择的是正确的密钥文件,则图片会被解密,并且在右侧的图片显示区域中显示。否则,图片不会被解密成功。
49 |
50 | - **OCR**
51 |
52 | 用户打开待识别文字的图片后,点击功能区的 “OCR” 。待OCR识别完后,软件会弹出一个对话框,在对话框内的文本区域内会显示识别的文字结果。同时,用户可以在文本区域内对识别结果进行格式、内容的调整。用户调整完后,可以选择复制结果。
53 |
54 | - **取色**
55 |
56 | 点击功能区的 “取色” ,然后会弹出一个对话框,在对话框中会显示当前鼠标所在位置的颜色。用户移动鼠标的位置,对话框中显示的颜色值会发生相应的变化,待用户移到需要取色的位置后,按 “空格” 键即可确定颜色值。最后,用户可以选择复制颜色的RGB值或十六进制值。
57 |
58 | - **恢复**
59 |
60 | 当用户操作错误后,想要恢复原始的图片,点击软件上方菜单区中的 “恢复” 即可。
61 |
62 |
63 |
64 | ## 3. 代码说明
65 |
66 | - 核心代码(图片处理代码)
67 |
68 | 本项目中所有图片处理相关的代码均在 [**“com/zeketian/imageutil/control/BasicProcessingUtil.py”**](https://github.com/ZekeTian/ImageUtils/blob/master/com/zeketian/imageutil/control/BasicProcessingUtil.py) 文件中。
69 |
70 | - 界面代码
71 |
72 | 软件的界面是利用 PyQT 的 **Designer** 工具设计,所有 **.ui** 文件均是由该工具生成。之后,再利用 **Pyuic** 工具将 **.ui** 文件转换成 Python 文件。软件主体界面代码在文件 [“com/zeketian/imageutil/ui/MainUI.py”](https://github.com/ZekeTian/ImageUtils/blob/master/com/zeketian/imageutil/ui/MainUI.py) 中。
73 |
74 |
75 |
76 | ## 4. 特别说明
77 |
78 | - OCR 配置
79 |
80 | 本项目中的 “OCR” 功能使用了百度的 OCR 识别 API,因此如果需要使用该功能,请先在百度 AI 开放平台中创建OCR 识别项目,然后修改 [**“com/zeketian/imageutil/control/BasicProcessingUtil.py”**](https://github.com/ZekeTian/ImageUtils/blob/master/com/zeketian/imageutil/control/BasicProcessingUtil.py) 的 **img_ocr** 函数中的API 配置信息,如下所示。
81 |
82 | ```python
83 | APP_ID = '你的 App ID'
84 | API_KEY = '你的 Api Key'
85 | SECRET_KEY = '你的 Secret Key'
86 | ```
87 |
88 | - 取色功能
89 |
90 | 本项目中 “取色” 功能使用了 shuoGG1239 的 [ColorCatcher](https://github.com/shuoGG1239/ColorCatcher) 项目的代码,特别感谢。
91 |
92 | - 图片文件路径
93 |
94 | 在选择图片时,图片文件所在的路径中不要出现中文,否则打开图片时可能会出现问题。
95 |
96 |
--------------------------------------------------------------------------------
/com/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZekeTian/ImageUtils/af2adfe8b4457cae95e2bb6a0a4200ca5611344d/com/__init__.py
--------------------------------------------------------------------------------
/com/zeketian/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZekeTian/ImageUtils/af2adfe8b4457cae95e2bb6a0a4200ca5611344d/com/zeketian/__init__.py
--------------------------------------------------------------------------------
/com/zeketian/imageutil/Main.py:
--------------------------------------------------------------------------------
1 | import sys, os
2 | from com.zeketian.imageutil.ui.MainUI import MainWindow
3 | from PyQt5.QtWidgets import QApplication, QMainWindow
4 | from PyQt5 import QtCore
5 |
6 |
7 | class MyWindow(QMainWindow, MainWindow):
8 | def __init__(self, parent=None):
9 | super(MyWindow, self).__init__(parent)
10 | self.setupUi(self)
11 |
12 |
13 | if __name__ == '__main__':
14 | try:
15 | app = QApplication(sys.argv)
16 | window = MyWindow()
17 | window.show()
18 | sys.exit(app.exec_())
19 | except Exception as e:
20 | print(e)
21 |
--------------------------------------------------------------------------------
/com/zeketian/imageutil/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZekeTian/ImageUtils/af2adfe8b4457cae95e2bb6a0a4200ca5611344d/com/zeketian/imageutil/__init__.py
--------------------------------------------------------------------------------
/com/zeketian/imageutil/control/BasicProcessingUtil.py:
--------------------------------------------------------------------------------
1 | import cv2
2 | import numpy as np
3 | from aip import AipOcr
4 | from PIL import Image, ImageDraw, ImageFont
5 | import os, math
6 |
7 |
8 | def crop_image(src_img, x_start, x_end, y_start, y_end):
9 | """
10 | 图片裁剪
11 | :param src_img: 原始图片
12 | :param x_start: x 起始坐标
13 | :param x_end: x 结束坐标
14 | :param y_start: y 开始坐标
15 | :param y_end: y 结束坐标
16 | :return:
17 | """
18 | tmp_img = cv2.cvtColor(src_img, cv2.COLOR_BGR2RGB)
19 | tmp_img = tmp_img[y_start:y_end, x_start:x_end] # 长,宽
20 | return cv2.cvtColor(tmp_img, cv2.COLOR_RGB2BGR)
21 |
22 |
23 | def adjust_lightness(src_img, lightness_value):
24 | """
25 | :param src_img: 待调整亮度的图片
26 | :param lightness_value: 亮度值
27 | :return:
28 | """
29 | height, width, channel = src_img.shape # 获取shape的数值,height和width、通道
30 |
31 | # 新建全零图片数组src2,将height和width,类型设置为原图片的通道类型(色素全为零,输出为全黑图片)
32 | src2 = np.zeros([height, width, channel], src_img.dtype)
33 | # new_img = cv2.addWeighted(src_img, a, src2, 1 - a, lightnessValue) # 处理后的图片
34 | new_img = cv2.addWeighted(src_img, 1, src2, 1, lightness_value) # 处理后的图片
35 |
36 | return new_img
37 |
38 |
39 | def add_watermark(src_img, water_text, position, color):
40 | """
41 | 添加水印
42 | :param src_img: 原始图片
43 | :param water_text: 水印文字
44 | :param position: 水印位置
45 | :param color: 水印文字颜色
46 | :return:
47 | """
48 | # 根据选择的位置,确定水印的起始位置
49 | height, width, channel = src_img.shape
50 | x_padding, y_padding = width * 0.05, height * 0.05 # 与边缘的间距
51 |
52 | scale = min((width / 1000), (height / 1000)) # 按照图片的长宽大小对字体进行一个放大,scale 即为放大倍数
53 | font_size = 20 + int(scale) * 5 # 根据 scale 增加字体的大小,从而使得字体大小适应图片的大小
54 | font_path = "{0}/ui/font.ttf".format(os.getcwd())
55 | font = ImageFont.truetype(font_path, font_size, encoding="utf-8") # 获取自定义的字体
56 | (text_width, text_height) = font.getsize(water_text)
57 |
58 | x_start, y_start = 0, 0 # 水印文字的左下角坐标
59 | if position == "左上角":
60 | x_start = x_padding
61 | y_start = y_padding
62 | elif position == "右上角":
63 | x_start = width - text_width - x_padding
64 | y_start = y_padding
65 | elif position == "中间":
66 | x_start = (width - text_width) / 2
67 | y_start = (height - text_height) / 2
68 | elif position == "左下角":
69 | x_start = x_padding
70 | y_start = height - y_padding - text_height
71 | elif position == "右下角":
72 | x_start = width - text_width - x_padding
73 | y_start = height - y_padding - text_height
74 |
75 | img_pil = Image.fromarray(cv2.cvtColor(src_img, cv2.COLOR_BGR2RGB)) # 将 OpenCV 的 BGR 色彩转换成 PIL 需要的 RGB 色彩
76 | draw = ImageDraw.Draw(img_pil)
77 | draw.text((x_start, y_start), water_text, color, font=font)
78 | return cv2.cvtColor(np.asarray(img_pil), cv2.COLOR_RGB2BGR) # 将 PIL 的 RGB 色彩转换成 OpenCV 的 BGR 色彩
79 |
80 |
81 | def gaussian_blur(src_img, x_start, x_end, y_start, y_end, ksize, sigmaX):
82 | """
83 | 高斯模糊
84 | """
85 | blur = src_img[y_start:y_end, x_start:x_end]
86 | blur = cv2.GaussianBlur(blur, ksize, sigmaX)
87 | src_img[y_start:y_end, x_start:x_end] = blur
88 | return src_img
89 |
90 |
91 | def compress_img(src_img, size):
92 | """
93 | 调整图片到指定大小
94 | """
95 | return cv2.resize(src_img, size, interpolation=cv2.INTER_AREA)
96 |
97 |
98 | def img_stitching(images):
99 | """
100 | 图片拼接
101 | """
102 | stitcher = cv2.Stitcher_create()
103 | status, stitch_img = stitcher.stitch(images)
104 | if status != cv2.Stitcher_OK:
105 | print(f"合拼图片失败,status = {status}")
106 | return stitch_img
107 |
108 |
109 | def img_encoding(image, dir_path):
110 | """
111 | 图片加密
112 | :return:
113 | """
114 | height, width, channel = image.shape
115 |
116 | # 随机创建密钥文件
117 | img_key = np.random.randint(0, 256, size=[height, width, channel], dtype=np.uint8)
118 | # 保存密钥
119 | np.save(dir_path + "/" + "img_key2", img_key)
120 |
121 | # 返回加密后的图片
122 | return cv2.bitwise_xor(image, img_key)
123 |
124 |
125 | def img_decoding(image, key_file_path):
126 | """
127 | 图片解密
128 | """
129 | img_key = np.load(key_file_path)
130 | return cv2.bitwise_xor(image, img_key)
131 |
132 |
133 | def img_ocr(image):
134 | """
135 | OCR 文字识别
136 | """
137 | APP_ID = '你的 App ID'
138 | API_KEY = '你的 Api Key'
139 | SECRET_KEY = '你的 Secret Key'
140 |
141 | client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
142 | text = client.basicGeneral(image)
143 | words_result = text["words_result"]
144 | result_str = "" # 存储最终的结果
145 | for w in words_result:
146 | result_str = result_str + w["words"] + "\n"
147 |
148 | return result_str
149 |
150 |
151 | # 滤镜效果
152 | def black_white_filter(src_img):
153 | """
154 | 黑白滤镜
155 | """
156 | return cv2.cvtColor(src_img, cv2.COLOR_BGR2GRAY) # 直接将图片转换为灰度图片即可
157 |
158 |
159 | def sketch_filter(src_img):
160 | """
161 | 素描滤镜
162 | """
163 | # 图像灰度处理
164 | gray_img = cv2.cvtColor(src_img, cv2.COLOR_BGR2GRAY)
165 |
166 | # 高斯滤波降噪
167 | gaussian = cv2.GaussianBlur(gray_img, (5, 5), 0)
168 |
169 | # Canny算子
170 | canny = cv2.Canny(gaussian, 50, 150)
171 |
172 | # 阈值化处理
173 | ret, result = cv2.threshold(canny, 100, 255, cv2.THRESH_BINARY_INV)
174 | return result
175 |
176 |
177 | def embossment_filter(src_img):
178 | """
179 | 浮雕滤镜
180 | """
181 | # 获取图像行和列
182 | height, width = src_img.shape[:2]
183 | # 图像灰度处理
184 | gray_img = cv2.cvtColor(src_img, cv2.COLOR_BGR2GRAY)
185 |
186 | result = np.zeros(gray_img.shape, np.uint8)
187 |
188 | for w in range(0, width - 1):
189 | new_value = np.int32(gray_img[:, w]) - np.int32(gray_img[:, w + 1]) + 120
190 | new_value[new_value > 255] = 255
191 | new_value[new_value < 0] = 0
192 | result[:, w] = new_value
193 |
194 | return result
195 |
196 |
197 | def reminiscence_filter(src_img):
198 | """
199 | 怀旧滤镜
200 | """
201 | # 图像怀旧特效
202 | B = 0.272 * src_img[:, :, 2] + 0.534 * src_img[:, :, 1] + 0.131 * src_img[:, :, 0]
203 | G = 0.349 * src_img[:, :, 2] + 0.686 * src_img[:, :, 1] + 0.168 * src_img[:, :, 0]
204 | R = 0.393 * src_img[:, :, 2] + 0.769 * src_img[:, :, 1] + 0.189 * src_img[:, :, 0]
205 |
206 | # 像素值大于 255 的,则直接赋值为 255
207 | B[B > 255] = 255
208 | G[G > 255] = 255
209 | R[R > 255] = 255
210 |
211 | filter_result = np.dstack((B, G, R)) # 加了滤镜效果后的图片
212 | return np.uint8(filter_result) # 将像素值从 numpy.float64 类型转换成 np.uint8 类型,从而可以正常显示
213 |
214 | # for i in range(rows):
215 | # for j in range(cols):
216 | # B = 0.272 * src_img[i, j][2] + 0.534 * src_img[i, j][1] + 0.131 * src_img[i, j][0]
217 | # G = 0.349 * src_img[i, j][2] + 0.686 * src_img[i, j][1] + 0.168 * src_img[i, j][0]
218 | # R = 0.393 * src_img[i, j][2] + 0.769 * src_img[i, j][1] + 0.189 * src_img[i, j][0]
219 | # if B > 255:
220 | # B = 255
221 | # if G > 255:
222 | # G = 255
223 | # if R > 255:
224 | # R = 255
225 | # dst[i, j] = np.uint8((B, G, R))
226 | # return dst
227 |
228 |
229 | def add_filter(src_img, filter_type):
230 | """
231 | 为图片添加滤镜效果
232 | :param src_img: 原始图片
233 | :param filter_type: 滤镜类型
234 | """
235 | if filter_type == "黑白":
236 | return black_white_filter(src_img)
237 | elif filter_type == "素描":
238 | return sketch_filter(src_img)
239 | elif filter_type == "浮雕":
240 | return embossment_filter(src_img)
241 | elif filter_type == "怀旧":
242 | return reminiscence_filter(src_img)
243 |
--------------------------------------------------------------------------------
/com/zeketian/imageutil/control/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZekeTian/ImageUtils/af2adfe8b4457cae95e2bb6a0a4200ca5611344d/com/zeketian/imageutil/control/__init__.py
--------------------------------------------------------------------------------
/com/zeketian/imageutil/ui/ColorCatcher.py:
--------------------------------------------------------------------------------
1 | from PyQt5.QtCore import Qt, QTimer
2 | from PyQt5.QtGui import QGuiApplication, QColor, QCursor
3 | from PyQt5.QtWidgets import QWidget, QApplication, QDialog
4 |
5 | from com.zeketian.imageutil.ui.UiColorCatcher import ColorCatcherDialog
6 |
7 |
8 | class ColorCatcher(QDialog):
9 | def __init__(self):
10 | QDialog.__init__(self)
11 | self.ui = ColorCatcherDialog()
12 | self.ui.setupUi(self)
13 | self.ui.lineEditMark.setText("按空格键确定")
14 | self.timer = QTimer(self)
15 | self.timer.timeout.connect(self.catch)
16 | self.timer.start(100)
17 | self.nowColor = None
18 | self.setCursor(Qt.CrossCursor)
19 | self.show()
20 |
21 | def catch(self):
22 | x = QCursor.pos().x()
23 | y = QCursor.pos().y()
24 | pixmap = QGuiApplication.primaryScreen().grabWindow(QApplication.desktop().winId(), x, y, 1, 1)
25 | if not pixmap.isNull():
26 | image = pixmap.toImage()
27 | if not image.isNull():
28 | if (image.valid(0, 0)):
29 | color = QColor(image.pixel(0, 0))
30 | r, g, b, _ = color.getRgb()
31 | self.nowColor = color
32 | self.ui.lineEditMove.setText('(%d, %d, %d) %s' % (r, g, b, color.name().upper()))
33 | self.ui.lineEditMove.setStyleSheet('QLineEdit{border:2px solid %s;}' % (color.name()))
34 |
35 | def keyPressEvent(self, event):
36 | if event.key() == Qt.Key_Space:
37 | self.ui.lineEditMark.setText(self.ui.lineEditMove.text())
38 | self.ui.lineEditMark.setStyleSheet('QLineEdit{border:2px solid %s;}' % (self.nowColor.name()))
39 |
--------------------------------------------------------------------------------
/com/zeketian/imageutil/ui/CustomDialog.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'watermark-dialog.ui'
4 | #
5 | # Created by: PyQt5 UI code generator 5.13.0
6 | #
7 | # WARNING! All changes made in this file will be lost!
8 |
9 |
10 | from PyQt5 import QtCore, QtGui, QtWidgets
11 | from PyQt5.QtGui import QIntValidator
12 | from PyQt5.QtWidgets import QDialog
13 |
14 |
15 | class WatermarkDialog(QDialog):
16 | """
17 | 设置水印信息的对话框
18 | """
19 |
20 | def __init__(self):
21 | QDialog.__init__(self)
22 | self.setupUi(self)
23 |
24 | def setupUi(self, Dialog):
25 | Dialog.setObjectName("Dialog")
26 | Dialog.resize(400, 100)
27 | self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
28 | self.verticalLayout.setObjectName("verticalLayout")
29 | self.lineEdit = QtWidgets.QLineEdit(Dialog)
30 | self.lineEdit.setObjectName("lineEdit")
31 | self.verticalLayout.addWidget(self.lineEdit)
32 | self.horizontalLayout = QtWidgets.QHBoxLayout()
33 | self.horizontalLayout.setSpacing(5)
34 | self.horizontalLayout.setObjectName("horizontalLayout")
35 | self.comboBox = QtWidgets.QComboBox(Dialog)
36 | self.comboBox.setObjectName("comboBox")
37 | self.comboBox.addItem("")
38 | self.comboBox.addItem("")
39 | self.comboBox.addItem("")
40 | self.comboBox.addItem("")
41 | self.comboBox.addItem("")
42 | self.horizontalLayout.addWidget(self.comboBox)
43 | self.btn_confirm = QtWidgets.QDialogButtonBox(Dialog)
44 | self.btn_confirm.setOrientation(QtCore.Qt.Horizontal)
45 | self.btn_confirm.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel | QtWidgets.QDialogButtonBox.Ok)
46 | self.btn_confirm.setObjectName("btn_confirm")
47 | self.horizontalLayout.addWidget(self.btn_confirm)
48 | self.verticalLayout.addLayout(self.horizontalLayout)
49 |
50 | self.__current_position = "左上角" # 水印位置初始值为左上角
51 |
52 | self.retranslateUi(Dialog)
53 | self.comboBox.activated.connect(self.handle_activated)
54 | self.btn_confirm.accepted.connect(Dialog.accept)
55 | self.btn_confirm.rejected.connect(Dialog.reject)
56 | QtCore.QMetaObject.connectSlotsByName(Dialog)
57 |
58 | def retranslateUi(self, Dialog):
59 | _translate = QtCore.QCoreApplication.translate
60 | Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
61 | self.comboBox.setItemText(0, _translate("Dialog", "左上角"))
62 | self.comboBox.setItemText(1, _translate("Dialog", "右上角"))
63 | self.comboBox.setItemText(2, _translate("Dialog", "中间"))
64 | self.comboBox.setItemText(3, _translate("Dialog", "左下角"))
65 | self.comboBox.setItemText(4, _translate("Dialog", "右下角"))
66 |
67 | def get_watermark_text(self):
68 | return self.lineEdit.text()
69 |
70 | def get_watermark_position(self):
71 | return self.__current_position
72 |
73 | def handle_activated(self, index):
74 | self.__current_position = self.comboBox.itemText(index)
75 |
76 |
77 | class OcrDialog(QDialog):
78 | """
79 | 显示 OCR 结果的对话框
80 | """
81 |
82 | def __init__(self):
83 | QDialog.__init__(self)
84 | self.setupUi(self)
85 |
86 | def setupUi(self, Dialog):
87 | Dialog.setObjectName("Dialog")
88 | Dialog.resize(594, 302)
89 | self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
90 | self.verticalLayout.setObjectName("verticalLayout")
91 | self.plainTextEdit = QtWidgets.QPlainTextEdit(Dialog)
92 | self.plainTextEdit.setObjectName("plainTextEdit")
93 | self.verticalLayout.addWidget(self.plainTextEdit)
94 | self.horizontalLayout = QtWidgets.QHBoxLayout()
95 | self.horizontalLayout.setObjectName("horizontalLayout")
96 | spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
97 | self.horizontalLayout.addItem(spacerItem)
98 | self.btn_ok = QtWidgets.QPushButton(Dialog)
99 | self.btn_ok.setObjectName("btn_ok")
100 | self.horizontalLayout.addWidget(self.btn_ok)
101 | self.verticalLayout.addLayout(self.horizontalLayout)
102 | self.retranslateUi(Dialog)
103 | self.btn_ok.clicked.connect(Dialog.accept)
104 | QtCore.QMetaObject.connectSlotsByName(Dialog)
105 |
106 | def retranslateUi(self, Dialog):
107 | _translate = QtCore.QCoreApplication.translate
108 | Dialog.setWindowTitle(_translate("Dialog", "OCR结果"))
109 | self.btn_ok.setText(_translate("Dialog", "OK"))
110 |
111 |
112 | class CompressDialog(QDialog):
113 | """
114 | 设置压缩信息的对话框
115 | """
116 |
117 | def __init__(self):
118 | QDialog.__init__(self)
119 | self.setupUi(self)
120 |
121 | def setupUi(self, Dialog):
122 | Dialog.setObjectName("Dialog")
123 | Dialog.resize(300, 100)
124 | Dialog.setMinimumSize(QtCore.QSize(300, 100))
125 | Dialog.setMaximumSize(QtCore.QSize(300, 100))
126 | self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
127 | self.verticalLayout.setObjectName("verticalLayout")
128 | self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
129 | self.horizontalLayout_2.setObjectName("horizontalLayout_2")
130 | self.label_width = QtWidgets.QLabel(Dialog)
131 | self.label_width.setObjectName("label_width")
132 | self.horizontalLayout_2.addWidget(self.label_width)
133 | self.input_width = QtWidgets.QLineEdit(Dialog)
134 | self.input_width.setObjectName("input_width")
135 | self.horizontalLayout_2.addWidget(self.input_width)
136 | self.label_height = QtWidgets.QLabel(Dialog)
137 | self.label_height.setObjectName("label_height")
138 | self.horizontalLayout_2.addWidget(self.label_height)
139 | self.input_height = QtWidgets.QLineEdit(Dialog)
140 | self.input_height.setObjectName("input_height")
141 | self.horizontalLayout_2.addWidget(self.input_height)
142 | self.verticalLayout.addLayout(self.horizontalLayout_2)
143 | self.horizontalLayout = QtWidgets.QHBoxLayout()
144 | self.horizontalLayout.setObjectName("horizontalLayout")
145 | spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
146 | self.horizontalLayout.addItem(spacerItem)
147 | self.btn_ok = QtWidgets.QPushButton(Dialog)
148 | self.btn_ok.setObjectName("btn_ok")
149 | self.horizontalLayout.addWidget(self.btn_ok)
150 | self.verticalLayout.addLayout(self.horizontalLayout)
151 |
152 | # 设置输入框内容的整型验证器,从而限制输入的数据类型
153 | self.input_width.setValidator(QIntValidator())
154 | self.input_height.setValidator(QIntValidator())
155 |
156 | self.retranslateUi(Dialog)
157 | self.btn_ok.clicked.connect(Dialog.accept)
158 | QtCore.QMetaObject.connectSlotsByName(Dialog)
159 |
160 | def retranslateUi(self, Dialog):
161 | _translate = QtCore.QCoreApplication.translate
162 | Dialog.setWindowTitle(_translate("Dialog", "请输入目标图片大小"))
163 | self.label_width.setText(_translate("Dialog", "Width:"))
164 | self.label_height.setText(_translate("Dialog", "Height:"))
165 | self.btn_ok.setText(_translate("Dialog", "OK"))
166 |
167 |
168 | class FilterDialog(QDialog):
169 | """
170 | 选择滤镜效果的对话框
171 | """
172 |
173 | def __init__(self):
174 | QDialog.__init__(self)
175 | self.setupUi(self)
176 |
177 | def setupUi(self, Dialog):
178 | Dialog.setObjectName("Dialog")
179 | Dialog.resize(200, 150)
180 | Dialog.setMinimumSize(QtCore.QSize(200, 150))
181 | Dialog.setMaximumSize(QtCore.QSize(200, 150))
182 | self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
183 | self.verticalLayout.setObjectName("verticalLayout")
184 | self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
185 | self.horizontalLayout_3.setObjectName("horizontalLayout_3")
186 | self.groupBox_2 = QtWidgets.QGroupBox(Dialog)
187 | self.groupBox_2.setTitle("")
188 | self.groupBox_2.setObjectName("groupBox_2")
189 | self.rb_black_white = QtWidgets.QRadioButton(self.groupBox_2)
190 | self.rb_black_white.setGeometry(QtCore.QRect(10, 10, 115, 19))
191 | self.rb_black_white.setObjectName("rb_black_white")
192 | self.rb_sketch = QtWidgets.QRadioButton(self.groupBox_2)
193 | self.rb_sketch.setGeometry(QtCore.QRect(90, 10, 115, 19))
194 | self.rb_sketch.setObjectName("rb_sketch")
195 | self.rb_embossment = QtWidgets.QRadioButton(self.groupBox_2)
196 | self.rb_embossment.setGeometry(QtCore.QRect(10, 40, 115, 19))
197 | self.rb_embossment.setObjectName("rb_embossment")
198 | self.rb_reminiscence = QtWidgets.QRadioButton(self.groupBox_2)
199 | self.rb_reminiscence.setGeometry(QtCore.QRect(90, 40, 115, 19))
200 | self.rb_reminiscence.setObjectName("rb_reminiscence")
201 | self.horizontalLayout_3.addWidget(self.groupBox_2)
202 | self.verticalLayout.addLayout(self.horizontalLayout_3)
203 | self.horizontalLayout = QtWidgets.QHBoxLayout()
204 | self.horizontalLayout.setSpacing(0)
205 | self.horizontalLayout.setObjectName("horizontalLayout")
206 | spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
207 | self.horizontalLayout.addItem(spacerItem)
208 | self.btn_ok = QtWidgets.QPushButton(Dialog)
209 | self.btn_ok.setObjectName("btn_ok")
210 | self.horizontalLayout.addWidget(self.btn_ok)
211 | self.verticalLayout.addLayout(self.horizontalLayout)
212 |
213 | self.retranslateUi(Dialog)
214 |
215 | self.filter_type = "黑白" # 默认选择为 “黑白” 效果
216 | self.rb_black_white.setChecked(True)
217 |
218 | self.rb_black_white.toggled.connect(self.__select_filter)
219 | self.rb_sketch.toggled.connect(self.__select_filter)
220 | self.rb_embossment.toggled.connect(self.__select_filter)
221 | self.rb_reminiscence.toggled.connect(self.__select_filter)
222 | self.btn_ok.clicked.connect(Dialog.accept)
223 |
224 | QtCore.QMetaObject.connectSlotsByName(Dialog)
225 |
226 | def retranslateUi(self, Dialog):
227 | _translate = QtCore.QCoreApplication.translate
228 | Dialog.setWindowTitle(_translate("Dialog", "滤镜"))
229 | self.rb_black_white.setText(_translate("Dialog", "黑白"))
230 | self.rb_sketch.setText(_translate("Dialog", "素描"))
231 | self.rb_embossment.setText(_translate("Dialog", "浮雕"))
232 | self.rb_reminiscence.setText(_translate("Dialog", "怀旧"))
233 | self.btn_ok.setText(_translate("Dialog", "OK"))
234 |
235 | def __select_filter(self):
236 | if self.rb_black_white.isChecked():
237 | self.filter_type = "黑白"
238 | elif self.rb_sketch.isChecked():
239 | self.filter_type = "素描"
240 | elif self.rb_embossment.isChecked():
241 | self.filter_type = "浮雕"
242 | elif self.rb_reminiscence.isChecked():
243 | self.filter_type = "怀旧"
--------------------------------------------------------------------------------
/com/zeketian/imageutil/ui/CustomLabel.py:
--------------------------------------------------------------------------------
1 | from PyQt5.QtCore import QRect, Qt
2 | from PyQt5.QtGui import QPainter, QPen
3 | from PyQt5.QtWidgets import QLabel
4 | from PyQt5 import QtWidgets
5 |
6 |
7 | class ImageLabel(QLabel):
8 | """"
9 | 用于显示图片的 Label
10 | """
11 |
12 | # x0 = 0
13 | # y0 = 0
14 | # x1 = 0
15 | # y1 = 0
16 | # flag = False
17 | def __init__(self, parent=None):
18 | # super(ImageLabel, self).__init__(parent)
19 | super().__init__(parent)
20 |
21 | self.x0 = 0
22 | self.y0 = 0
23 | self.x1 = 0
24 | self.y1 = 0
25 | self.flag = False # 标记是否能够绘制矩形
26 | self.__isClear = False # 标记是否是清除矩形
27 | self.setAlignment(Qt.AlignCenter) # 居中对齐
28 | self.setFrameShape(QtWidgets.QFrame.Box) # 设置边框
29 | self.setStyleSheet("border-width: 1px;border-style: solid;border-color: rgb(218, 218, 218)")
30 | self.setText("")
31 |
32 | self.__w, self.__h = 0, 0
33 | self.pixmap_width, self.pixmap_height = 0, 0 # pixmap 的宽度、高度
34 | self.pixmap_x_start, self.pixmap_y_start = 0, 0 # pixmap 在 label 中的起点位置
35 | self.pixmap_x_end, self.pixmap_y_end = 0, 0 # pixamp 在 label 中的终点位置
36 |
37 | self.img_x_start, self.img_y_start = 0, 0 # 图片中选择的矩形区域的起点位置
38 | self.img_x_end, self.img_y_end = 0, 0 # 图片中选择的矩形区域的终点位置
39 | self.autoFillBackground()
40 |
41 | # 鼠标点击事件
42 | def mousePressEvent(self, event):
43 | # self.flag = True
44 | # 鼠标点击,相当于开始绘制矩形,将 isClear 置为 False
45 | self.__isClear = False
46 | self.x0 = event.x()
47 | self.y0 = event.y()
48 |
49 | # 计算 Pixmap 在 Label 中的位置
50 | self.__w, self.__h = self.width(), self.height()
51 | self.pixmap_x_start = (self.__w - self.pixmap_width) / 2
52 | self.pixmap_y_start = (self.__h - self.pixmap_height) / 2
53 | self.pixmap_x_end = self.pixmap_x_start + self.pixmap_width
54 | self.pixmap_y_end = self.pixmap_y_start + self.pixmap_height
55 |
56 | # 鼠标释放事件
57 | def mouseReleaseEvent(self, event):
58 | # self.flag = False
59 | self.setCursor(Qt.ArrowCursor) # 鼠标释放,矩形已经绘制完毕,恢复鼠标样式
60 |
61 | # 鼠标移动事件
62 | def mouseMoveEvent(self, event):
63 | if self.flag:
64 | self.x1 = event.x()
65 | self.y1 = event.y()
66 | self.update()
67 |
68 | def setPixmap(self, pixmap):
69 | super().setPixmap(pixmap)
70 | self.pixmap_width, self.pixmap_height = pixmap.width(), pixmap.height()
71 |
72 | # 绘制事件
73 | def paintEvent(self, event):
74 | super().paintEvent(event)
75 |
76 | # 判断是否是清除
77 | if self.__isClear:
78 | return # 是清除,则不需要执行下面的绘制操作。即此次 paint 事件没有绘制操作,因此界面中没有绘制的图形(从而相当于清除整个界面中已有的图形)
79 |
80 | # 判断用户起始位置是否在图片区域,只有在图片区域才画选择的矩形图
81 | if (self.pixmap_x_start <= self.x0 <= self.pixmap_x_end) \
82 | and (self.pixmap_y_start <= self.y0 <= self.pixmap_y_end):
83 | # 判断结束位置是否在图片区域内,如果超过,则直接设置成图片区域的终点
84 | if self.x1 > self.pixmap_x_end:
85 | self.x1 = self.pixmap_x_end
86 | elif self.x1 < self.pixmap_x_start:
87 | self.x1 = self.pixmap_x_start
88 |
89 | if self.y1 > self.pixmap_y_end:
90 | self.y1 = self.pixmap_y_end
91 | elif self.y1 < self.pixmap_y_start:
92 | self.y1 = self.pixmap_y_start
93 | rect = QRect(self.x0, self.y0, self.x1 - self.x0, self.y1 - self.y0)
94 |
95 | painter = QPainter(self)
96 | painter.setPen(QPen(Qt.red, 2, Qt.SolidLine))
97 | painter.drawRect(rect)
98 |
99 | # 计算矩形区域在图片中的位置
100 | self.img_x_start = int(self.x0 - self.pixmap_x_start)
101 | self.img_x_end = int(self.x1 - self.pixmap_x_start)
102 | self.img_y_start = int(self.y0 - self.pixmap_y_start)
103 | self.img_y_end = int(self.y1 - self.pixmap_y_start)
104 |
105 | def clearRect(self):
106 | # 清除
107 | self.__isClear = True
108 | self.update()
109 |
--------------------------------------------------------------------------------
/com/zeketian/imageutil/ui/UiColorCatcher.py:
--------------------------------------------------------------------------------
1 | from PyQt5 import QtCore, QtGui, QtWidgets
2 |
3 |
4 | class ColorCatcherDialog(object):
5 | def setupUi(self, ColorCatcher):
6 | ColorCatcher.setObjectName("ColorCatcher")
7 | ColorCatcher.resize(259, 88)
8 | self.verticalLayout = QtWidgets.QVBoxLayout(ColorCatcher)
9 | self.verticalLayout.setObjectName("verticalLayout")
10 | self.lineEditMove = QtWidgets.QLineEdit(ColorCatcher)
11 | self.lineEditMove.setMinimumSize(QtCore.QSize(0, 30))
12 | self.lineEditMove.setAlignment(QtCore.Qt.AlignCenter)
13 | self.lineEditMove.setReadOnly(True)
14 | self.lineEditMove.setPlaceholderText("")
15 | self.lineEditMove.setObjectName("lineEditMove")
16 | self.verticalLayout.addWidget(self.lineEditMove)
17 | self.lineEditMark = QtWidgets.QLineEdit(ColorCatcher)
18 | self.lineEditMark.setMinimumSize(QtCore.QSize(0, 30))
19 | self.lineEditMark.setAlignment(QtCore.Qt.AlignCenter)
20 | self.lineEditMark.setReadOnly(True)
21 | self.lineEditMark.setObjectName("lineEditMark")
22 | self.verticalLayout.addWidget(self.lineEditMark)
23 |
24 | self.retranslateUi(ColorCatcher)
25 | QtCore.QMetaObject.connectSlotsByName(ColorCatcher)
26 |
27 | def retranslateUi(self, ColorCatcher):
28 | _translate = QtCore.QCoreApplication.translate
29 | ColorCatcher.setWindowTitle(_translate("ColorCatcher", "ColorCatcher"))
30 | self.lineEditMark.setText(_translate("ColorCatcher", "Press Space to mark"))
31 | self.lineEditMark.setPlaceholderText(_translate("ColorCatcher", "Press Space to mark!"))
32 |
--------------------------------------------------------------------------------
/com/zeketian/imageutil/ui/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZekeTian/ImageUtils/af2adfe8b4457cae95e2bb6a0a4200ca5611344d/com/zeketian/imageutil/ui/__init__.py
--------------------------------------------------------------------------------
/com/zeketian/imageutil/ui/edit_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZekeTian/ImageUtils/af2adfe8b4457cae95e2bb6a0a4200ca5611344d/com/zeketian/imageutil/ui/edit_image.png
--------------------------------------------------------------------------------
/com/zeketian/imageutil/ui/font.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZekeTian/ImageUtils/af2adfe8b4457cae95e2bb6a0a4200ca5611344d/com/zeketian/imageutil/ui/font.ttf
--------------------------------------------------------------------------------
/com/zeketian/imageutil/ui/rotate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZekeTian/ImageUtils/af2adfe8b4457cae95e2bb6a0a4200ca5611344d/com/zeketian/imageutil/ui/rotate.png
--------------------------------------------------------------------------------
/compress-dialog.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'compress-dialog.ui'
4 | #
5 | # Created by: PyQt5 UI code generator 5.13.0
6 | #
7 | # WARNING! All changes made in this file will be lost!
8 |
9 |
10 | from PyQt5 import QtCore, QtGui, QtWidgets
11 |
12 |
13 | class Ui_Dialog(object):
14 | def setupUi(self, Dialog):
15 | Dialog.setObjectName("Dialog")
16 | Dialog.resize(300, 100)
17 | Dialog.setMinimumSize(QtCore.QSize(300, 100))
18 | Dialog.setMaximumSize(QtCore.QSize(300, 100))
19 | self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
20 | self.verticalLayout.setObjectName("verticalLayout")
21 | self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
22 | self.horizontalLayout_2.setObjectName("horizontalLayout_2")
23 | self.label_width = QtWidgets.QLabel(Dialog)
24 | self.label_width.setObjectName("label_width")
25 | self.horizontalLayout_2.addWidget(self.label_width)
26 | self.input_width = QtWidgets.QLineEdit(Dialog)
27 | self.input_width.setObjectName("input_width")
28 | self.horizontalLayout_2.addWidget(self.input_width)
29 | self.label_height = QtWidgets.QLabel(Dialog)
30 | self.label_height.setObjectName("label_height")
31 | self.horizontalLayout_2.addWidget(self.label_height)
32 | self.input_height = QtWidgets.QLineEdit(Dialog)
33 | self.input_height.setObjectName("input_height")
34 | self.horizontalLayout_2.addWidget(self.input_height)
35 | self.verticalLayout.addLayout(self.horizontalLayout_2)
36 | self.horizontalLayout = QtWidgets.QHBoxLayout()
37 | self.horizontalLayout.setObjectName("horizontalLayout")
38 | spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
39 | self.horizontalLayout.addItem(spacerItem)
40 | self.btn_ok = QtWidgets.QPushButton(Dialog)
41 | self.btn_ok.setObjectName("btn_ok")
42 | self.horizontalLayout.addWidget(self.btn_ok)
43 | self.verticalLayout.addLayout(self.horizontalLayout)
44 |
45 | self.retranslateUi(Dialog)
46 | self.btn_ok.clicked.connect(Dialog.accept)
47 | QtCore.QMetaObject.connectSlotsByName(Dialog)
48 |
49 | def retranslateUi(self, Dialog):
50 | _translate = QtCore.QCoreApplication.translate
51 | Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
52 | self.label_width.setText(_translate("Dialog", "Width:"))
53 | self.label_height.setText(_translate("Dialog", "Height:"))
54 | self.btn_ok.setText(_translate("Dialog", "OK"))
55 |
--------------------------------------------------------------------------------
/compress-dialog.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | Dialog
4 |
5 |
6 |
7 | 0
8 | 0
9 | 300
10 | 100
11 |
12 |
13 |
14 |
15 | 300
16 | 100
17 |
18 |
19 |
20 |
21 | 300
22 | 100
23 |
24 |
25 |
26 | Dialog
27 |
28 |
29 | -
30 |
31 |
-
32 |
33 |
34 | Width:
35 |
36 |
37 |
38 | -
39 |
40 |
41 | -
42 |
43 |
44 | Height:
45 |
46 |
47 |
48 | -
49 |
50 |
51 |
52 |
53 | -
54 |
55 |
-
56 |
57 |
58 | Qt::Horizontal
59 |
60 |
61 |
62 | 40
63 | 20
64 |
65 |
66 |
67 |
68 | -
69 |
70 |
71 | OK
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 | btn_ok
83 | clicked()
84 | Dialog
85 | accept()
86 |
87 |
88 | 266
89 | 193
90 |
91 |
92 | 199
93 | 149
94 |
95 |
96 |
97 |
98 |
99 |
--------------------------------------------------------------------------------
/edit_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZekeTian/ImageUtils/af2adfe8b4457cae95e2bb6a0a4200ca5611344d/edit_image.png
--------------------------------------------------------------------------------
/filter-dialog.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'filter-dialog.ui'
4 | #
5 | # Created by: PyQt5 UI code generator 5.13.0
6 | #
7 | # WARNING! All changes made in this file will be lost!
8 |
9 |
10 | from PyQt5 import QtCore, QtGui, QtWidgets
11 |
12 |
13 | class Ui_Dialog(object):
14 | def setupUi(self, Dialog):
15 | Dialog.setObjectName("Dialog")
16 | Dialog.resize(200, 150)
17 | Dialog.setMinimumSize(QtCore.QSize(200, 150))
18 | Dialog.setMaximumSize(QtCore.QSize(200, 150))
19 | self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
20 | self.verticalLayout.setObjectName("verticalLayout")
21 | self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
22 | self.horizontalLayout_3.setObjectName("horizontalLayout_3")
23 | self.groupBox_2 = QtWidgets.QGroupBox(Dialog)
24 | self.groupBox_2.setTitle("")
25 | self.groupBox_2.setObjectName("groupBox_2")
26 | self.rb_black_white = QtWidgets.QRadioButton(self.groupBox_2)
27 | self.rb_black_white.setGeometry(QtCore.QRect(10, 10, 115, 19))
28 | self.rb_black_white.setObjectName("rb_black_white")
29 | self.tb_sketch = QtWidgets.QRadioButton(self.groupBox_2)
30 | self.tb_sketch.setGeometry(QtCore.QRect(90, 10, 115, 19))
31 | self.tb_sketch.setObjectName("tb_sketch")
32 | self.rb_embossment = QtWidgets.QRadioButton(self.groupBox_2)
33 | self.rb_embossment.setGeometry(QtCore.QRect(10, 40, 115, 19))
34 | self.rb_embossment.setObjectName("rb_embossment")
35 | self.rb_reminiscence = QtWidgets.QRadioButton(self.groupBox_2)
36 | self.rb_reminiscence.setGeometry(QtCore.QRect(90, 40, 115, 19))
37 | self.rb_reminiscence.setObjectName("rb_reminiscence")
38 | self.horizontalLayout_3.addWidget(self.groupBox_2)
39 | self.verticalLayout.addLayout(self.horizontalLayout_3)
40 | self.horizontalLayout = QtWidgets.QHBoxLayout()
41 | self.horizontalLayout.setSpacing(0)
42 | self.horizontalLayout.setObjectName("horizontalLayout")
43 | spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
44 | self.horizontalLayout.addItem(spacerItem)
45 | self.btn_ok = QtWidgets.QPushButton(Dialog)
46 | self.btn_ok.setObjectName("btn_ok")
47 | self.horizontalLayout.addWidget(self.btn_ok)
48 | self.verticalLayout.addLayout(self.horizontalLayout)
49 |
50 | self.retranslateUi(Dialog)
51 | self.btn_ok.clicked.connect(Dialog.accept)
52 | self.rb_black_white.toggled['bool'].connect(Dialog.hide)
53 | QtCore.QMetaObject.connectSlotsByName(Dialog)
54 |
55 | def retranslateUi(self, Dialog):
56 | _translate = QtCore.QCoreApplication.translate
57 | Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
58 | self.rb_black_white.setText(_translate("Dialog", "黑白"))
59 | self.tb_sketch.setText(_translate("Dialog", "素描"))
60 | self.rb_embossment.setText(_translate("Dialog", "浮雕"))
61 | self.rb_reminiscence.setText(_translate("Dialog", "怀旧"))
62 | self.btn_ok.setText(_translate("Dialog", "OK"))
63 |
--------------------------------------------------------------------------------
/filter-dialog.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | Dialog
4 |
5 |
6 |
7 | 0
8 | 0
9 | 200
10 | 150
11 |
12 |
13 |
14 |
15 | 200
16 | 150
17 |
18 |
19 |
20 |
21 | 200
22 | 150
23 |
24 |
25 |
26 | Dialog
27 |
28 |
29 | -
30 |
31 |
-
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | 10
40 | 10
41 | 115
42 | 19
43 |
44 |
45 |
46 | 黑白
47 |
48 |
49 |
50 |
51 |
52 | 90
53 | 10
54 | 115
55 | 19
56 |
57 |
58 |
59 | 素描
60 |
61 |
62 |
63 |
64 |
65 | 10
66 | 40
67 | 115
68 | 19
69 |
70 |
71 |
72 | 浮雕
73 |
74 |
75 |
76 |
77 |
78 | 90
79 | 40
80 | 115
81 | 19
82 |
83 |
84 |
85 | 怀旧
86 |
87 |
88 |
89 |
90 |
91 |
92 | -
93 |
94 |
95 | 0
96 |
97 |
-
98 |
99 |
100 | Qt::Horizontal
101 |
102 |
103 |
104 | 40
105 | 20
106 |
107 |
108 |
109 |
110 | -
111 |
112 |
113 | OK
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 | btn_ok
125 | clicked()
126 | Dialog
127 | accept()
128 |
129 |
130 | 266
131 | 193
132 |
133 |
134 | 199
135 | 149
136 |
137 |
138 |
139 |
140 | rb_black_white
141 | toggled(bool)
142 | Dialog
143 | hide()
144 |
145 |
146 | 79
147 | 31
148 |
149 |
150 | 99
151 | 74
152 |
153 |
154 |
155 |
156 |
157 |
--------------------------------------------------------------------------------
/main-ui.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'main-ui.ui'
4 | #
5 | # Created by: PyQt5 UI code generator 5.13.0
6 | #
7 | # WARNING! All changes made in this file will be lost!
8 |
9 |
10 | from PyQt5 import QtCore, QtGui, QtWidgets
11 |
12 |
13 | class Ui_MainWindow(object):
14 | def setupUi(self, MainWindow):
15 | MainWindow.setObjectName("MainWindow")
16 | MainWindow.resize(919, 806)
17 | font = QtGui.QFont()
18 | font.setPointSize(10)
19 | MainWindow.setFont(font)
20 |
21 | self.centralwidget = QtWidgets.QWidget(MainWindow)
22 | self.centralwidget.setStyleSheet("background: rgb(30, 30, 30)")
23 | self.centralwidget.setObjectName("centralwidget")
24 | self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget)
25 | self.verticalLayout_3.setContentsMargins(2, 2, 2, 2)
26 | self.verticalLayout_3.setSpacing(0)
27 | self.verticalLayout_3.setObjectName("verticalLayout_3")
28 | self.title = QtWidgets.QFrame(self.centralwidget)
29 | self.title.setMinimumSize(QtCore.QSize(0, 55))
30 | self.title.setMaximumSize(QtCore.QSize(188888, 55))
31 | self.title.setStyleSheet("background: rgb(60, 60, 60)")
32 | self.title.setFrameShape(QtWidgets.QFrame.StyledPanel)
33 | self.title.setFrameShadow(QtWidgets.QFrame.Raised)
34 | self.title.setObjectName("title")
35 | self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.title)
36 | self.horizontalLayout_4.setObjectName("horizontalLayout_4")
37 | self.icon = QtWidgets.QToolButton(self.title)
38 | self.icon.setMinimumSize(QtCore.QSize(90, 45))
39 | self.icon.setMaximumSize(QtCore.QSize(90, 45))
40 | palette = QtGui.QPalette()
41 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
42 | brush.setStyle(QtCore.Qt.SolidPattern)
43 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
44 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
45 | brush.setStyle(QtCore.Qt.SolidPattern)
46 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
47 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
48 | brush.setStyle(QtCore.Qt.SolidPattern)
49 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
50 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
51 | brush.setStyle(QtCore.Qt.SolidPattern)
52 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
53 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
54 | brush.setStyle(QtCore.Qt.SolidPattern)
55 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
56 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
57 | brush.setStyle(QtCore.Qt.SolidPattern)
58 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
59 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
60 | brush.setStyle(QtCore.Qt.NoBrush)
61 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
62 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
63 | brush.setStyle(QtCore.Qt.SolidPattern)
64 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
65 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
66 | brush.setStyle(QtCore.Qt.SolidPattern)
67 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
68 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
69 | brush.setStyle(QtCore.Qt.SolidPattern)
70 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
71 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
72 | brush.setStyle(QtCore.Qt.SolidPattern)
73 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
74 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
75 | brush.setStyle(QtCore.Qt.SolidPattern)
76 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
77 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
78 | brush.setStyle(QtCore.Qt.SolidPattern)
79 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
80 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
81 | brush.setStyle(QtCore.Qt.NoBrush)
82 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
83 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
84 | brush.setStyle(QtCore.Qt.SolidPattern)
85 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
86 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
87 | brush.setStyle(QtCore.Qt.SolidPattern)
88 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
89 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
90 | brush.setStyle(QtCore.Qt.SolidPattern)
91 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
92 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
93 | brush.setStyle(QtCore.Qt.SolidPattern)
94 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
95 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
96 | brush.setStyle(QtCore.Qt.SolidPattern)
97 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
98 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
99 | brush.setStyle(QtCore.Qt.SolidPattern)
100 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
101 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
102 | brush.setStyle(QtCore.Qt.NoBrush)
103 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
104 | self.icon.setPalette(palette)
105 | font = QtGui.QFont()
106 | font.setPointSize(10)
107 | self.icon.setFont(font)
108 | self.icon.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
109 | "color: rgb(255, 255, 255)")
110 | self.icon.setText("")
111 | icon = QtGui.QIcon()
112 | icon.addPixmap(QtGui.QPixmap("edit_image.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
113 | self.icon.setIcon(icon)
114 | self.icon.setIconSize(QtCore.QSize(40, 40))
115 | self.icon.setObjectName("icon")
116 | self.horizontalLayout_4.addWidget(self.icon)
117 | self.operation = QtWidgets.QFrame(self.title)
118 | self.operation.setMinimumSize(QtCore.QSize(250, 45))
119 | self.operation.setMaximumSize(QtCore.QSize(250, 45))
120 | self.operation.setFrameShape(QtWidgets.QFrame.StyledPanel)
121 | self.operation.setFrameShadow(QtWidgets.QFrame.Raised)
122 | self.operation.setObjectName("operation")
123 | self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.operation)
124 | self.horizontalLayout_3.setObjectName("horizontalLayout_3")
125 | self.btn_open = QtWidgets.QToolButton(self.operation)
126 | palette = QtGui.QPalette()
127 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
128 | brush.setStyle(QtCore.Qt.SolidPattern)
129 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
130 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
131 | brush.setStyle(QtCore.Qt.SolidPattern)
132 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
133 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
134 | brush.setStyle(QtCore.Qt.SolidPattern)
135 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
136 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
137 | brush.setStyle(QtCore.Qt.SolidPattern)
138 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
139 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
140 | brush.setStyle(QtCore.Qt.SolidPattern)
141 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
142 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
143 | brush.setStyle(QtCore.Qt.SolidPattern)
144 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
145 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
146 | brush.setStyle(QtCore.Qt.NoBrush)
147 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
148 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
149 | brush.setStyle(QtCore.Qt.SolidPattern)
150 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
151 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
152 | brush.setStyle(QtCore.Qt.SolidPattern)
153 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
154 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
155 | brush.setStyle(QtCore.Qt.SolidPattern)
156 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
157 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
158 | brush.setStyle(QtCore.Qt.SolidPattern)
159 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
160 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
161 | brush.setStyle(QtCore.Qt.SolidPattern)
162 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
163 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
164 | brush.setStyle(QtCore.Qt.SolidPattern)
165 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
166 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
167 | brush.setStyle(QtCore.Qt.NoBrush)
168 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
169 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
170 | brush.setStyle(QtCore.Qt.SolidPattern)
171 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
172 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
173 | brush.setStyle(QtCore.Qt.SolidPattern)
174 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
175 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
176 | brush.setStyle(QtCore.Qt.SolidPattern)
177 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
178 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
179 | brush.setStyle(QtCore.Qt.SolidPattern)
180 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
181 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
182 | brush.setStyle(QtCore.Qt.SolidPattern)
183 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
184 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
185 | brush.setStyle(QtCore.Qt.SolidPattern)
186 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
187 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
188 | brush.setStyle(QtCore.Qt.NoBrush)
189 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
190 | self.btn_open.setPalette(palette)
191 | font = QtGui.QFont()
192 | font.setPointSize(10)
193 | self.btn_open.setFont(font)
194 | self.btn_open.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
195 | "color: rgb(255, 255, 255)")
196 | self.btn_open.setObjectName("btn_open")
197 | self.horizontalLayout_3.addWidget(self.btn_open)
198 | self.btn_save = QtWidgets.QToolButton(self.operation)
199 | palette = QtGui.QPalette()
200 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
201 | brush.setStyle(QtCore.Qt.SolidPattern)
202 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
203 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
204 | brush.setStyle(QtCore.Qt.SolidPattern)
205 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
206 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
207 | brush.setStyle(QtCore.Qt.SolidPattern)
208 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
209 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
210 | brush.setStyle(QtCore.Qt.SolidPattern)
211 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
212 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
213 | brush.setStyle(QtCore.Qt.SolidPattern)
214 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
215 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
216 | brush.setStyle(QtCore.Qt.SolidPattern)
217 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
218 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
219 | brush.setStyle(QtCore.Qt.NoBrush)
220 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
221 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
222 | brush.setStyle(QtCore.Qt.SolidPattern)
223 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
224 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
225 | brush.setStyle(QtCore.Qt.SolidPattern)
226 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
227 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
228 | brush.setStyle(QtCore.Qt.SolidPattern)
229 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
230 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
231 | brush.setStyle(QtCore.Qt.SolidPattern)
232 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
233 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
234 | brush.setStyle(QtCore.Qt.SolidPattern)
235 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
236 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
237 | brush.setStyle(QtCore.Qt.SolidPattern)
238 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
239 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
240 | brush.setStyle(QtCore.Qt.NoBrush)
241 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
242 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
243 | brush.setStyle(QtCore.Qt.SolidPattern)
244 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
245 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
246 | brush.setStyle(QtCore.Qt.SolidPattern)
247 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
248 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
249 | brush.setStyle(QtCore.Qt.SolidPattern)
250 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
251 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
252 | brush.setStyle(QtCore.Qt.SolidPattern)
253 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
254 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
255 | brush.setStyle(QtCore.Qt.SolidPattern)
256 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
257 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
258 | brush.setStyle(QtCore.Qt.SolidPattern)
259 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
260 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
261 | brush.setStyle(QtCore.Qt.NoBrush)
262 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
263 | self.btn_save.setPalette(palette)
264 | font = QtGui.QFont()
265 | font.setPointSize(10)
266 | self.btn_save.setFont(font)
267 | self.btn_save.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
268 | "color: rgb(255, 255, 255)")
269 | self.btn_save.setObjectName("btn_save")
270 | self.horizontalLayout_3.addWidget(self.btn_save)
271 | self.btn_undo = QtWidgets.QToolButton(self.operation)
272 | palette = QtGui.QPalette()
273 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
274 | brush.setStyle(QtCore.Qt.SolidPattern)
275 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
276 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
277 | brush.setStyle(QtCore.Qt.SolidPattern)
278 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
279 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
280 | brush.setStyle(QtCore.Qt.SolidPattern)
281 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
282 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
283 | brush.setStyle(QtCore.Qt.SolidPattern)
284 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
285 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
286 | brush.setStyle(QtCore.Qt.SolidPattern)
287 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
288 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
289 | brush.setStyle(QtCore.Qt.SolidPattern)
290 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
291 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
292 | brush.setStyle(QtCore.Qt.NoBrush)
293 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
294 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
295 | brush.setStyle(QtCore.Qt.SolidPattern)
296 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
297 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
298 | brush.setStyle(QtCore.Qt.SolidPattern)
299 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
300 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
301 | brush.setStyle(QtCore.Qt.SolidPattern)
302 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
303 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
304 | brush.setStyle(QtCore.Qt.SolidPattern)
305 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
306 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
307 | brush.setStyle(QtCore.Qt.SolidPattern)
308 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
309 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
310 | brush.setStyle(QtCore.Qt.SolidPattern)
311 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
312 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
313 | brush.setStyle(QtCore.Qt.NoBrush)
314 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
315 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
316 | brush.setStyle(QtCore.Qt.SolidPattern)
317 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
318 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
319 | brush.setStyle(QtCore.Qt.SolidPattern)
320 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
321 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
322 | brush.setStyle(QtCore.Qt.SolidPattern)
323 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
324 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
325 | brush.setStyle(QtCore.Qt.SolidPattern)
326 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
327 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
328 | brush.setStyle(QtCore.Qt.SolidPattern)
329 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
330 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
331 | brush.setStyle(QtCore.Qt.SolidPattern)
332 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
333 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
334 | brush.setStyle(QtCore.Qt.NoBrush)
335 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
336 | self.btn_undo.setPalette(palette)
337 | font = QtGui.QFont()
338 | font.setPointSize(10)
339 | self.btn_undo.setFont(font)
340 | self.btn_undo.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
341 | "color: rgb(255, 255, 255)")
342 | self.btn_undo.setObjectName("btn_undo")
343 | self.horizontalLayout_3.addWidget(self.btn_undo)
344 | self.horizontalLayout_4.addWidget(self.operation)
345 | spacerItem = QtWidgets.QSpacerItem(100, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
346 | self.horizontalLayout_4.addItem(spacerItem)
347 | self.control = QtWidgets.QFrame(self.title)
348 | self.control.setMinimumSize(QtCore.QSize(0, 45))
349 | self.control.setMaximumSize(QtCore.QSize(120, 45))
350 | self.control.setFrameShape(QtWidgets.QFrame.StyledPanel)
351 | self.control.setFrameShadow(QtWidgets.QFrame.Raised)
352 | self.control.setObjectName("control")
353 | self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.control)
354 | self.horizontalLayout_2.setObjectName("horizontalLayout_2")
355 | self.btn_confirm = QtWidgets.QToolButton(self.control)
356 | palette = QtGui.QPalette()
357 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
358 | brush.setStyle(QtCore.Qt.SolidPattern)
359 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
360 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
361 | brush.setStyle(QtCore.Qt.SolidPattern)
362 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
363 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
364 | brush.setStyle(QtCore.Qt.SolidPattern)
365 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
366 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
367 | brush.setStyle(QtCore.Qt.SolidPattern)
368 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
369 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
370 | brush.setStyle(QtCore.Qt.SolidPattern)
371 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
372 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
373 | brush.setStyle(QtCore.Qt.SolidPattern)
374 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
375 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
376 | brush.setStyle(QtCore.Qt.NoBrush)
377 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
378 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
379 | brush.setStyle(QtCore.Qt.SolidPattern)
380 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
381 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
382 | brush.setStyle(QtCore.Qt.SolidPattern)
383 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
384 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
385 | brush.setStyle(QtCore.Qt.SolidPattern)
386 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
387 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
388 | brush.setStyle(QtCore.Qt.SolidPattern)
389 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
390 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
391 | brush.setStyle(QtCore.Qt.SolidPattern)
392 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
393 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
394 | brush.setStyle(QtCore.Qt.SolidPattern)
395 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
396 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
397 | brush.setStyle(QtCore.Qt.NoBrush)
398 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
399 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
400 | brush.setStyle(QtCore.Qt.SolidPattern)
401 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
402 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
403 | brush.setStyle(QtCore.Qt.SolidPattern)
404 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
405 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
406 | brush.setStyle(QtCore.Qt.SolidPattern)
407 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
408 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
409 | brush.setStyle(QtCore.Qt.SolidPattern)
410 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
411 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
412 | brush.setStyle(QtCore.Qt.SolidPattern)
413 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
414 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
415 | brush.setStyle(QtCore.Qt.SolidPattern)
416 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
417 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
418 | brush.setStyle(QtCore.Qt.NoBrush)
419 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
420 | self.btn_confirm.setPalette(palette)
421 | font = QtGui.QFont()
422 | font.setPointSize(10)
423 | self.btn_confirm.setFont(font)
424 | self.btn_confirm.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
425 | "color: rgb(255, 255, 255)")
426 | self.btn_confirm.setObjectName("btn_confirm")
427 | self.horizontalLayout_2.addWidget(self.btn_confirm)
428 | self.btn_cancel = QtWidgets.QToolButton(self.control)
429 | palette = QtGui.QPalette()
430 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
431 | brush.setStyle(QtCore.Qt.SolidPattern)
432 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
433 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
434 | brush.setStyle(QtCore.Qt.SolidPattern)
435 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
436 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
437 | brush.setStyle(QtCore.Qt.SolidPattern)
438 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
439 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
440 | brush.setStyle(QtCore.Qt.SolidPattern)
441 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
442 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
443 | brush.setStyle(QtCore.Qt.SolidPattern)
444 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
445 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
446 | brush.setStyle(QtCore.Qt.SolidPattern)
447 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
448 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
449 | brush.setStyle(QtCore.Qt.NoBrush)
450 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
451 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
452 | brush.setStyle(QtCore.Qt.SolidPattern)
453 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
454 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
455 | brush.setStyle(QtCore.Qt.SolidPattern)
456 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
457 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
458 | brush.setStyle(QtCore.Qt.SolidPattern)
459 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
460 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
461 | brush.setStyle(QtCore.Qt.SolidPattern)
462 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
463 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
464 | brush.setStyle(QtCore.Qt.SolidPattern)
465 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
466 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
467 | brush.setStyle(QtCore.Qt.SolidPattern)
468 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
469 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
470 | brush.setStyle(QtCore.Qt.NoBrush)
471 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
472 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
473 | brush.setStyle(QtCore.Qt.SolidPattern)
474 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
475 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
476 | brush.setStyle(QtCore.Qt.SolidPattern)
477 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
478 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
479 | brush.setStyle(QtCore.Qt.SolidPattern)
480 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
481 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
482 | brush.setStyle(QtCore.Qt.SolidPattern)
483 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
484 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
485 | brush.setStyle(QtCore.Qt.SolidPattern)
486 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
487 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
488 | brush.setStyle(QtCore.Qt.SolidPattern)
489 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
490 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
491 | brush.setStyle(QtCore.Qt.NoBrush)
492 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
493 | self.btn_cancel.setPalette(palette)
494 | font = QtGui.QFont()
495 | font.setPointSize(10)
496 | self.btn_cancel.setFont(font)
497 | self.btn_cancel.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
498 | "color: rgb(255, 255, 255)")
499 | self.btn_cancel.setObjectName("btn_cancel")
500 | self.horizontalLayout_2.addWidget(self.btn_cancel)
501 | self.horizontalLayout_4.addWidget(self.control)
502 | self.verticalLayout_3.addWidget(self.title)
503 | self.horizontalLayout = QtWidgets.QHBoxLayout()
504 | self.horizontalLayout.setSpacing(0)
505 | self.horizontalLayout.setObjectName("horizontalLayout")
506 | self.frame_4 = QtWidgets.QFrame(self.centralwidget)
507 | self.frame_4.setMinimumSize(QtCore.QSize(90, 0))
508 | self.frame_4.setMaximumSize(QtCore.QSize(90, 16777215))
509 | self.frame_4.setStyleSheet("background: rgb(51, 51, 51)")
510 | self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
511 | self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
512 | self.frame_4.setObjectName("frame_4")
513 | self.frame_5 = QtWidgets.QFrame(self.frame_4)
514 | self.frame_5.setGeometry(QtCore.QRect(10, 0, 56, 500))
515 | self.frame_5.setMinimumSize(QtCore.QSize(0, 500))
516 | self.frame_5.setMaximumSize(QtCore.QSize(16777215, 500))
517 | self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
518 | self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised)
519 | self.frame_5.setObjectName("frame_5")
520 | self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.frame_5)
521 | self.verticalLayout_2.setObjectName("verticalLayout_2")
522 | self.btn_clip = QtWidgets.QPushButton(self.frame_5)
523 | self.btn_clip.setMinimumSize(QtCore.QSize(50, 0))
524 | palette = QtGui.QPalette()
525 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
526 | brush.setStyle(QtCore.Qt.SolidPattern)
527 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
528 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
529 | brush.setStyle(QtCore.Qt.SolidPattern)
530 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
531 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
532 | brush.setStyle(QtCore.Qt.SolidPattern)
533 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
534 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
535 | brush.setStyle(QtCore.Qt.SolidPattern)
536 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
537 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
538 | brush.setStyle(QtCore.Qt.SolidPattern)
539 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
540 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
541 | brush.setStyle(QtCore.Qt.SolidPattern)
542 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
543 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
544 | brush.setStyle(QtCore.Qt.NoBrush)
545 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
546 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
547 | brush.setStyle(QtCore.Qt.SolidPattern)
548 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
549 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
550 | brush.setStyle(QtCore.Qt.SolidPattern)
551 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
552 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
553 | brush.setStyle(QtCore.Qt.SolidPattern)
554 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
555 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
556 | brush.setStyle(QtCore.Qt.SolidPattern)
557 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
558 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
559 | brush.setStyle(QtCore.Qt.SolidPattern)
560 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
561 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
562 | brush.setStyle(QtCore.Qt.SolidPattern)
563 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
564 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
565 | brush.setStyle(QtCore.Qt.NoBrush)
566 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
567 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
568 | brush.setStyle(QtCore.Qt.SolidPattern)
569 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
570 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
571 | brush.setStyle(QtCore.Qt.SolidPattern)
572 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
573 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
574 | brush.setStyle(QtCore.Qt.SolidPattern)
575 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
576 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
577 | brush.setStyle(QtCore.Qt.SolidPattern)
578 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
579 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
580 | brush.setStyle(QtCore.Qt.SolidPattern)
581 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
582 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
583 | brush.setStyle(QtCore.Qt.SolidPattern)
584 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
585 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
586 | brush.setStyle(QtCore.Qt.NoBrush)
587 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
588 | self.btn_clip.setPalette(palette)
589 | font = QtGui.QFont()
590 | font.setPointSize(10)
591 | self.btn_clip.setFont(font)
592 | self.btn_clip.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
593 | "color: rgb(255, 255, 255)")
594 | self.btn_clip.setObjectName("btn_clip")
595 | self.verticalLayout_2.addWidget(self.btn_clip)
596 | self.btn_lightness = QtWidgets.QToolButton(self.frame_5)
597 | self.btn_lightness.setMinimumSize(QtCore.QSize(50, 0))
598 | palette = QtGui.QPalette()
599 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
600 | brush.setStyle(QtCore.Qt.SolidPattern)
601 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
602 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
603 | brush.setStyle(QtCore.Qt.SolidPattern)
604 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
605 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
606 | brush.setStyle(QtCore.Qt.SolidPattern)
607 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
608 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
609 | brush.setStyle(QtCore.Qt.SolidPattern)
610 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
611 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
612 | brush.setStyle(QtCore.Qt.SolidPattern)
613 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
614 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
615 | brush.setStyle(QtCore.Qt.SolidPattern)
616 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
617 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
618 | brush.setStyle(QtCore.Qt.NoBrush)
619 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
620 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
621 | brush.setStyle(QtCore.Qt.SolidPattern)
622 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
623 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
624 | brush.setStyle(QtCore.Qt.SolidPattern)
625 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
626 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
627 | brush.setStyle(QtCore.Qt.SolidPattern)
628 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
629 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
630 | brush.setStyle(QtCore.Qt.SolidPattern)
631 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
632 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
633 | brush.setStyle(QtCore.Qt.SolidPattern)
634 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
635 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
636 | brush.setStyle(QtCore.Qt.SolidPattern)
637 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
638 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
639 | brush.setStyle(QtCore.Qt.NoBrush)
640 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
641 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
642 | brush.setStyle(QtCore.Qt.SolidPattern)
643 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
644 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
645 | brush.setStyle(QtCore.Qt.SolidPattern)
646 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
647 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
648 | brush.setStyle(QtCore.Qt.SolidPattern)
649 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
650 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
651 | brush.setStyle(QtCore.Qt.SolidPattern)
652 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
653 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
654 | brush.setStyle(QtCore.Qt.SolidPattern)
655 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
656 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
657 | brush.setStyle(QtCore.Qt.SolidPattern)
658 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
659 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
660 | brush.setStyle(QtCore.Qt.NoBrush)
661 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
662 | self.btn_lightness.setPalette(palette)
663 | font = QtGui.QFont()
664 | font.setPointSize(10)
665 | self.btn_lightness.setFont(font)
666 | self.btn_lightness.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
667 | "color: rgb(255, 255, 255)")
668 | self.btn_lightness.setObjectName("btn_lightness")
669 | self.verticalLayout_2.addWidget(self.btn_lightness)
670 | self.btn_watermark = QtWidgets.QToolButton(self.frame_5)
671 | self.btn_watermark.setMinimumSize(QtCore.QSize(50, 0))
672 | palette = QtGui.QPalette()
673 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
674 | brush.setStyle(QtCore.Qt.SolidPattern)
675 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
676 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
677 | brush.setStyle(QtCore.Qt.SolidPattern)
678 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
679 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
680 | brush.setStyle(QtCore.Qt.SolidPattern)
681 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
682 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
683 | brush.setStyle(QtCore.Qt.SolidPattern)
684 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
685 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
686 | brush.setStyle(QtCore.Qt.SolidPattern)
687 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
688 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
689 | brush.setStyle(QtCore.Qt.SolidPattern)
690 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
691 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
692 | brush.setStyle(QtCore.Qt.NoBrush)
693 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
694 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
695 | brush.setStyle(QtCore.Qt.SolidPattern)
696 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
697 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
698 | brush.setStyle(QtCore.Qt.SolidPattern)
699 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
700 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
701 | brush.setStyle(QtCore.Qt.SolidPattern)
702 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
703 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
704 | brush.setStyle(QtCore.Qt.SolidPattern)
705 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
706 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
707 | brush.setStyle(QtCore.Qt.SolidPattern)
708 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
709 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
710 | brush.setStyle(QtCore.Qt.SolidPattern)
711 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
712 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
713 | brush.setStyle(QtCore.Qt.NoBrush)
714 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
715 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
716 | brush.setStyle(QtCore.Qt.SolidPattern)
717 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
718 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
719 | brush.setStyle(QtCore.Qt.SolidPattern)
720 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
721 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
722 | brush.setStyle(QtCore.Qt.SolidPattern)
723 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
724 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
725 | brush.setStyle(QtCore.Qt.SolidPattern)
726 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
727 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
728 | brush.setStyle(QtCore.Qt.SolidPattern)
729 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
730 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
731 | brush.setStyle(QtCore.Qt.SolidPattern)
732 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
733 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
734 | brush.setStyle(QtCore.Qt.NoBrush)
735 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
736 | self.btn_watermark.setPalette(palette)
737 | font = QtGui.QFont()
738 | font.setPointSize(10)
739 | self.btn_watermark.setFont(font)
740 | self.btn_watermark.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
741 | "color: rgb(255, 255, 255)")
742 | self.btn_watermark.setObjectName("btn_watermark")
743 | self.verticalLayout_2.addWidget(self.btn_watermark, 0, QtCore.Qt.AlignLeft)
744 | self.btn_blur = QtWidgets.QToolButton(self.frame_5)
745 | self.btn_blur.setMinimumSize(QtCore.QSize(50, 0))
746 | palette = QtGui.QPalette()
747 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
748 | brush.setStyle(QtCore.Qt.SolidPattern)
749 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
750 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
751 | brush.setStyle(QtCore.Qt.SolidPattern)
752 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
753 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
754 | brush.setStyle(QtCore.Qt.SolidPattern)
755 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
756 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
757 | brush.setStyle(QtCore.Qt.SolidPattern)
758 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
759 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
760 | brush.setStyle(QtCore.Qt.SolidPattern)
761 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
762 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
763 | brush.setStyle(QtCore.Qt.SolidPattern)
764 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
765 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
766 | brush.setStyle(QtCore.Qt.NoBrush)
767 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
768 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
769 | brush.setStyle(QtCore.Qt.SolidPattern)
770 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
771 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
772 | brush.setStyle(QtCore.Qt.SolidPattern)
773 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
774 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
775 | brush.setStyle(QtCore.Qt.SolidPattern)
776 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
777 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
778 | brush.setStyle(QtCore.Qt.SolidPattern)
779 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
780 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
781 | brush.setStyle(QtCore.Qt.SolidPattern)
782 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
783 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
784 | brush.setStyle(QtCore.Qt.SolidPattern)
785 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
786 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
787 | brush.setStyle(QtCore.Qt.NoBrush)
788 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
789 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
790 | brush.setStyle(QtCore.Qt.SolidPattern)
791 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
792 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
793 | brush.setStyle(QtCore.Qt.SolidPattern)
794 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
795 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
796 | brush.setStyle(QtCore.Qt.SolidPattern)
797 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
798 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
799 | brush.setStyle(QtCore.Qt.SolidPattern)
800 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
801 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
802 | brush.setStyle(QtCore.Qt.SolidPattern)
803 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
804 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
805 | brush.setStyle(QtCore.Qt.SolidPattern)
806 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
807 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
808 | brush.setStyle(QtCore.Qt.NoBrush)
809 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
810 | self.btn_blur.setPalette(palette)
811 | font = QtGui.QFont()
812 | font.setPointSize(10)
813 | self.btn_blur.setFont(font)
814 | self.btn_blur.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
815 | "color: rgb(255, 255, 255)")
816 | self.btn_blur.setObjectName("btn_blur")
817 | self.verticalLayout_2.addWidget(self.btn_blur)
818 | self.btn_compress = QtWidgets.QToolButton(self.frame_5)
819 | self.btn_compress.setMinimumSize(QtCore.QSize(50, 0))
820 | palette = QtGui.QPalette()
821 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
822 | brush.setStyle(QtCore.Qt.SolidPattern)
823 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
824 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
825 | brush.setStyle(QtCore.Qt.SolidPattern)
826 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
827 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
828 | brush.setStyle(QtCore.Qt.SolidPattern)
829 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
830 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
831 | brush.setStyle(QtCore.Qt.SolidPattern)
832 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
833 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
834 | brush.setStyle(QtCore.Qt.SolidPattern)
835 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
836 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
837 | brush.setStyle(QtCore.Qt.SolidPattern)
838 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
839 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
840 | brush.setStyle(QtCore.Qt.NoBrush)
841 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
842 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
843 | brush.setStyle(QtCore.Qt.SolidPattern)
844 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
845 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
846 | brush.setStyle(QtCore.Qt.SolidPattern)
847 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
848 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
849 | brush.setStyle(QtCore.Qt.SolidPattern)
850 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
851 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
852 | brush.setStyle(QtCore.Qt.SolidPattern)
853 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
854 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
855 | brush.setStyle(QtCore.Qt.SolidPattern)
856 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
857 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
858 | brush.setStyle(QtCore.Qt.SolidPattern)
859 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
860 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
861 | brush.setStyle(QtCore.Qt.NoBrush)
862 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
863 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
864 | brush.setStyle(QtCore.Qt.SolidPattern)
865 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
866 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
867 | brush.setStyle(QtCore.Qt.SolidPattern)
868 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
869 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
870 | brush.setStyle(QtCore.Qt.SolidPattern)
871 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
872 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
873 | brush.setStyle(QtCore.Qt.SolidPattern)
874 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
875 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
876 | brush.setStyle(QtCore.Qt.SolidPattern)
877 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
878 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
879 | brush.setStyle(QtCore.Qt.SolidPattern)
880 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
881 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
882 | brush.setStyle(QtCore.Qt.NoBrush)
883 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
884 | self.btn_compress.setPalette(palette)
885 | font = QtGui.QFont()
886 | font.setPointSize(10)
887 | self.btn_compress.setFont(font)
888 | self.btn_compress.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
889 | "color: rgb(255, 255, 255)")
890 | self.btn_compress.setObjectName("btn_compress")
891 | self.verticalLayout_2.addWidget(self.btn_compress)
892 | self.btn_change_bg = QtWidgets.QToolButton(self.frame_5)
893 | self.btn_change_bg.setMinimumSize(QtCore.QSize(50, 0))
894 | palette = QtGui.QPalette()
895 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
896 | brush.setStyle(QtCore.Qt.SolidPattern)
897 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
898 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
899 | brush.setStyle(QtCore.Qt.SolidPattern)
900 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
901 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
902 | brush.setStyle(QtCore.Qt.SolidPattern)
903 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
904 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
905 | brush.setStyle(QtCore.Qt.SolidPattern)
906 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
907 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
908 | brush.setStyle(QtCore.Qt.SolidPattern)
909 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
910 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
911 | brush.setStyle(QtCore.Qt.SolidPattern)
912 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
913 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
914 | brush.setStyle(QtCore.Qt.NoBrush)
915 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
916 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
917 | brush.setStyle(QtCore.Qt.SolidPattern)
918 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
919 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
920 | brush.setStyle(QtCore.Qt.SolidPattern)
921 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
922 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
923 | brush.setStyle(QtCore.Qt.SolidPattern)
924 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
925 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
926 | brush.setStyle(QtCore.Qt.SolidPattern)
927 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
928 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
929 | brush.setStyle(QtCore.Qt.SolidPattern)
930 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
931 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
932 | brush.setStyle(QtCore.Qt.SolidPattern)
933 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
934 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
935 | brush.setStyle(QtCore.Qt.NoBrush)
936 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
937 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
938 | brush.setStyle(QtCore.Qt.SolidPattern)
939 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
940 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
941 | brush.setStyle(QtCore.Qt.SolidPattern)
942 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
943 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
944 | brush.setStyle(QtCore.Qt.SolidPattern)
945 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
946 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
947 | brush.setStyle(QtCore.Qt.SolidPattern)
948 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
949 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
950 | brush.setStyle(QtCore.Qt.SolidPattern)
951 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
952 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
953 | brush.setStyle(QtCore.Qt.SolidPattern)
954 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
955 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
956 | brush.setStyle(QtCore.Qt.NoBrush)
957 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
958 | self.btn_change_bg.setPalette(palette)
959 | font = QtGui.QFont()
960 | font.setPointSize(10)
961 | self.btn_change_bg.setFont(font)
962 | self.btn_change_bg.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
963 | "color: rgb(255, 255, 255)")
964 | self.btn_change_bg.setObjectName("btn_change_bg")
965 | self.verticalLayout_2.addWidget(self.btn_change_bg)
966 | self.btn_encode = QtWidgets.QToolButton(self.frame_5)
967 | self.btn_encode.setMinimumSize(QtCore.QSize(50, 0))
968 | palette = QtGui.QPalette()
969 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
970 | brush.setStyle(QtCore.Qt.SolidPattern)
971 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
972 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
973 | brush.setStyle(QtCore.Qt.SolidPattern)
974 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
975 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
976 | brush.setStyle(QtCore.Qt.SolidPattern)
977 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
978 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
979 | brush.setStyle(QtCore.Qt.SolidPattern)
980 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
981 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
982 | brush.setStyle(QtCore.Qt.SolidPattern)
983 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
984 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
985 | brush.setStyle(QtCore.Qt.SolidPattern)
986 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
987 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
988 | brush.setStyle(QtCore.Qt.NoBrush)
989 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
990 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
991 | brush.setStyle(QtCore.Qt.SolidPattern)
992 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
993 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
994 | brush.setStyle(QtCore.Qt.SolidPattern)
995 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
996 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
997 | brush.setStyle(QtCore.Qt.SolidPattern)
998 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
999 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1000 | brush.setStyle(QtCore.Qt.SolidPattern)
1001 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
1002 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1003 | brush.setStyle(QtCore.Qt.SolidPattern)
1004 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
1005 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1006 | brush.setStyle(QtCore.Qt.SolidPattern)
1007 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
1008 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1009 | brush.setStyle(QtCore.Qt.NoBrush)
1010 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
1011 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1012 | brush.setStyle(QtCore.Qt.SolidPattern)
1013 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
1014 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1015 | brush.setStyle(QtCore.Qt.SolidPattern)
1016 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
1017 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1018 | brush.setStyle(QtCore.Qt.SolidPattern)
1019 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
1020 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1021 | brush.setStyle(QtCore.Qt.SolidPattern)
1022 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
1023 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1024 | brush.setStyle(QtCore.Qt.SolidPattern)
1025 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
1026 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1027 | brush.setStyle(QtCore.Qt.SolidPattern)
1028 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
1029 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1030 | brush.setStyle(QtCore.Qt.NoBrush)
1031 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
1032 | self.btn_encode.setPalette(palette)
1033 | font = QtGui.QFont()
1034 | font.setPointSize(10)
1035 | self.btn_encode.setFont(font)
1036 | self.btn_encode.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
1037 | "color: rgb(255, 255, 255)")
1038 | self.btn_encode.setObjectName("btn_encode")
1039 | self.verticalLayout_2.addWidget(self.btn_encode)
1040 | self.btn_decode = QtWidgets.QToolButton(self.frame_5)
1041 | self.btn_decode.setMinimumSize(QtCore.QSize(50, 0))
1042 | palette = QtGui.QPalette()
1043 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1044 | brush.setStyle(QtCore.Qt.SolidPattern)
1045 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
1046 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1047 | brush.setStyle(QtCore.Qt.SolidPattern)
1048 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
1049 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1050 | brush.setStyle(QtCore.Qt.SolidPattern)
1051 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
1052 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1053 | brush.setStyle(QtCore.Qt.SolidPattern)
1054 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
1055 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1056 | brush.setStyle(QtCore.Qt.SolidPattern)
1057 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
1058 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1059 | brush.setStyle(QtCore.Qt.SolidPattern)
1060 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
1061 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1062 | brush.setStyle(QtCore.Qt.NoBrush)
1063 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
1064 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1065 | brush.setStyle(QtCore.Qt.SolidPattern)
1066 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
1067 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1068 | brush.setStyle(QtCore.Qt.SolidPattern)
1069 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
1070 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1071 | brush.setStyle(QtCore.Qt.SolidPattern)
1072 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
1073 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1074 | brush.setStyle(QtCore.Qt.SolidPattern)
1075 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
1076 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1077 | brush.setStyle(QtCore.Qt.SolidPattern)
1078 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
1079 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1080 | brush.setStyle(QtCore.Qt.SolidPattern)
1081 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
1082 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1083 | brush.setStyle(QtCore.Qt.NoBrush)
1084 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
1085 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1086 | brush.setStyle(QtCore.Qt.SolidPattern)
1087 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
1088 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1089 | brush.setStyle(QtCore.Qt.SolidPattern)
1090 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
1091 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1092 | brush.setStyle(QtCore.Qt.SolidPattern)
1093 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
1094 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1095 | brush.setStyle(QtCore.Qt.SolidPattern)
1096 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
1097 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1098 | brush.setStyle(QtCore.Qt.SolidPattern)
1099 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
1100 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1101 | brush.setStyle(QtCore.Qt.SolidPattern)
1102 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
1103 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1104 | brush.setStyle(QtCore.Qt.NoBrush)
1105 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
1106 | self.btn_decode.setPalette(palette)
1107 | font = QtGui.QFont()
1108 | font.setPointSize(10)
1109 | self.btn_decode.setFont(font)
1110 | self.btn_decode.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
1111 | "color: rgb(255, 255, 255)")
1112 | self.btn_decode.setObjectName("btn_decode")
1113 | self.verticalLayout_2.addWidget(self.btn_decode)
1114 | self.btn_ocr = QtWidgets.QToolButton(self.frame_5)
1115 | self.btn_ocr.setMinimumSize(QtCore.QSize(50, 0))
1116 | palette = QtGui.QPalette()
1117 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1118 | brush.setStyle(QtCore.Qt.SolidPattern)
1119 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
1120 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1121 | brush.setStyle(QtCore.Qt.SolidPattern)
1122 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
1123 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1124 | brush.setStyle(QtCore.Qt.SolidPattern)
1125 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
1126 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1127 | brush.setStyle(QtCore.Qt.SolidPattern)
1128 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
1129 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1130 | brush.setStyle(QtCore.Qt.SolidPattern)
1131 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
1132 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1133 | brush.setStyle(QtCore.Qt.SolidPattern)
1134 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
1135 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1136 | brush.setStyle(QtCore.Qt.NoBrush)
1137 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
1138 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1139 | brush.setStyle(QtCore.Qt.SolidPattern)
1140 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
1141 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1142 | brush.setStyle(QtCore.Qt.SolidPattern)
1143 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
1144 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1145 | brush.setStyle(QtCore.Qt.SolidPattern)
1146 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
1147 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1148 | brush.setStyle(QtCore.Qt.SolidPattern)
1149 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
1150 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1151 | brush.setStyle(QtCore.Qt.SolidPattern)
1152 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
1153 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1154 | brush.setStyle(QtCore.Qt.SolidPattern)
1155 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
1156 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1157 | brush.setStyle(QtCore.Qt.NoBrush)
1158 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
1159 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1160 | brush.setStyle(QtCore.Qt.SolidPattern)
1161 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
1162 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1163 | brush.setStyle(QtCore.Qt.SolidPattern)
1164 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
1165 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1166 | brush.setStyle(QtCore.Qt.SolidPattern)
1167 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
1168 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1169 | brush.setStyle(QtCore.Qt.SolidPattern)
1170 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
1171 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1172 | brush.setStyle(QtCore.Qt.SolidPattern)
1173 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
1174 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1175 | brush.setStyle(QtCore.Qt.SolidPattern)
1176 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
1177 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1178 | brush.setStyle(QtCore.Qt.NoBrush)
1179 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
1180 | self.btn_ocr.setPalette(palette)
1181 | font = QtGui.QFont()
1182 | font.setPointSize(10)
1183 | self.btn_ocr.setFont(font)
1184 | self.btn_ocr.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
1185 | "color: rgb(255, 255, 255)")
1186 | self.btn_ocr.setObjectName("btn_ocr")
1187 | self.verticalLayout_2.addWidget(self.btn_ocr)
1188 | self.btn_screenshot = QtWidgets.QToolButton(self.frame_5)
1189 | self.btn_screenshot.setMinimumSize(QtCore.QSize(50, 0))
1190 | palette = QtGui.QPalette()
1191 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1192 | brush.setStyle(QtCore.Qt.SolidPattern)
1193 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
1194 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1195 | brush.setStyle(QtCore.Qt.SolidPattern)
1196 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
1197 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1198 | brush.setStyle(QtCore.Qt.SolidPattern)
1199 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
1200 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1201 | brush.setStyle(QtCore.Qt.SolidPattern)
1202 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
1203 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1204 | brush.setStyle(QtCore.Qt.SolidPattern)
1205 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
1206 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1207 | brush.setStyle(QtCore.Qt.SolidPattern)
1208 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
1209 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1210 | brush.setStyle(QtCore.Qt.NoBrush)
1211 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
1212 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1213 | brush.setStyle(QtCore.Qt.SolidPattern)
1214 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
1215 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1216 | brush.setStyle(QtCore.Qt.SolidPattern)
1217 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
1218 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1219 | brush.setStyle(QtCore.Qt.SolidPattern)
1220 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
1221 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1222 | brush.setStyle(QtCore.Qt.SolidPattern)
1223 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
1224 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1225 | brush.setStyle(QtCore.Qt.SolidPattern)
1226 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
1227 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1228 | brush.setStyle(QtCore.Qt.SolidPattern)
1229 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
1230 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1231 | brush.setStyle(QtCore.Qt.NoBrush)
1232 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
1233 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1234 | brush.setStyle(QtCore.Qt.SolidPattern)
1235 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
1236 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1237 | brush.setStyle(QtCore.Qt.SolidPattern)
1238 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
1239 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1240 | brush.setStyle(QtCore.Qt.SolidPattern)
1241 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
1242 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1243 | brush.setStyle(QtCore.Qt.SolidPattern)
1244 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
1245 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1246 | brush.setStyle(QtCore.Qt.SolidPattern)
1247 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
1248 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1249 | brush.setStyle(QtCore.Qt.SolidPattern)
1250 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
1251 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1252 | brush.setStyle(QtCore.Qt.NoBrush)
1253 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
1254 | self.btn_screenshot.setPalette(palette)
1255 | font = QtGui.QFont()
1256 | font.setPointSize(10)
1257 | self.btn_screenshot.setFont(font)
1258 | self.btn_screenshot.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
1259 | "color: rgb(255, 255, 255)")
1260 | self.btn_screenshot.setObjectName("btn_screenshot")
1261 | self.verticalLayout_2.addWidget(self.btn_screenshot)
1262 | self.btn_pick_color = QtWidgets.QToolButton(self.frame_5)
1263 | self.btn_pick_color.setMinimumSize(QtCore.QSize(50, 0))
1264 | palette = QtGui.QPalette()
1265 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1266 | brush.setStyle(QtCore.Qt.SolidPattern)
1267 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
1268 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1269 | brush.setStyle(QtCore.Qt.SolidPattern)
1270 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
1271 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1272 | brush.setStyle(QtCore.Qt.SolidPattern)
1273 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
1274 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1275 | brush.setStyle(QtCore.Qt.SolidPattern)
1276 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
1277 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1278 | brush.setStyle(QtCore.Qt.SolidPattern)
1279 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
1280 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1281 | brush.setStyle(QtCore.Qt.SolidPattern)
1282 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
1283 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1284 | brush.setStyle(QtCore.Qt.NoBrush)
1285 | palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
1286 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1287 | brush.setStyle(QtCore.Qt.SolidPattern)
1288 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
1289 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1290 | brush.setStyle(QtCore.Qt.SolidPattern)
1291 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
1292 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1293 | brush.setStyle(QtCore.Qt.SolidPattern)
1294 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
1295 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1296 | brush.setStyle(QtCore.Qt.SolidPattern)
1297 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
1298 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1299 | brush.setStyle(QtCore.Qt.SolidPattern)
1300 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
1301 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1302 | brush.setStyle(QtCore.Qt.SolidPattern)
1303 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
1304 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1305 | brush.setStyle(QtCore.Qt.NoBrush)
1306 | palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
1307 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1308 | brush.setStyle(QtCore.Qt.SolidPattern)
1309 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
1310 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1311 | brush.setStyle(QtCore.Qt.SolidPattern)
1312 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
1313 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1314 | brush.setStyle(QtCore.Qt.SolidPattern)
1315 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
1316 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
1317 | brush.setStyle(QtCore.Qt.SolidPattern)
1318 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
1319 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1320 | brush.setStyle(QtCore.Qt.SolidPattern)
1321 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
1322 | brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
1323 | brush.setStyle(QtCore.Qt.SolidPattern)
1324 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
1325 | brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
1326 | brush.setStyle(QtCore.Qt.NoBrush)
1327 | palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
1328 | self.btn_pick_color.setPalette(palette)
1329 | font = QtGui.QFont()
1330 | font.setPointSize(10)
1331 | self.btn_pick_color.setFont(font)
1332 | self.btn_pick_color.setStyleSheet("background: rgba(0, 0, 0, 0);\n"
1333 | "color: rgb(255, 255, 255)")
1334 | self.btn_pick_color.setObjectName("btn_pick_color")
1335 | self.verticalLayout_2.addWidget(self.btn_pick_color)
1336 | self.slider_blur = QtWidgets.QSlider(self.frame_4)
1337 | self.slider_blur.setEnabled(True)
1338 | self.slider_blur.setGeometry(QtCore.QRect(10, 130, 71, 22))
1339 | self.slider_blur.setOrientation(QtCore.Qt.Horizontal)
1340 | self.slider_blur.setObjectName("slider_blur")
1341 | self.slider_compress = QtWidgets.QSlider(self.frame_4)
1342 | self.slider_compress.setEnabled(True)
1343 | self.slider_compress.setGeometry(QtCore.QRect(10, 170, 71, 22))
1344 | self.slider_compress.setOrientation(QtCore.Qt.Horizontal)
1345 | self.slider_compress.setObjectName("slider_compress")
1346 | self.slider_lightness = QtWidgets.QSlider(self.frame_4)
1347 | self.slider_lightness.setEnabled(True)
1348 | self.slider_lightness.setGeometry(QtCore.QRect(11, 50, 71, 22))
1349 | self.slider_lightness.setOrientation(QtCore.Qt.Horizontal)
1350 | self.slider_lightness.setObjectName("slider_lightness")
1351 | self.horizontalLayout.addWidget(self.frame_4)
1352 | self.frame_3 = QtWidgets.QFrame(self.centralwidget)
1353 | self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
1354 | self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
1355 | self.frame_3.setObjectName("frame_3")
1356 | self.gridLayout = QtWidgets.QGridLayout(self.frame_3)
1357 | self.gridLayout.setObjectName("gridLayout")
1358 | self.img_panel = QtWidgets.QLabel(self.frame_3)
1359 | self.img_panel.setStyleSheet("border-width: 1px;border-style: solid;border-color: rgb(218, 218, 218)")
1360 | self.img_panel.setText("")
1361 | self.img_panel.setObjectName("img_panel")
1362 | self.gridLayout.addWidget(self.img_panel, 0, 0, 1, 1)
1363 | self.horizontalLayout.addWidget(self.frame_3)
1364 | self.verticalLayout_3.addLayout(self.horizontalLayout)
1365 | MainWindow.setCentralWidget(self.centralwidget)
1366 | self.action = QtWidgets.QAction(MainWindow)
1367 | self.action.setObjectName("action")
1368 |
1369 | self.retranslateUi(MainWindow)
1370 | self.btn_lightness.clicked.connect(self.slider_lightness.show)
1371 | self.slider_lightness.sliderReleased.connect(self.slider_lightness.hide)
1372 | self.slider_blur.sliderReleased.connect(self.slider_blur.hide)
1373 | self.slider_compress.sliderReleased.connect(self.slider_compress.hide)
1374 | QtCore.QMetaObject.connectSlotsByName(MainWindow)
1375 |
1376 | def retranslateUi(self, MainWindow):
1377 | _translate = QtCore.QCoreApplication.translate
1378 | MainWindow.setWindowTitle(_translate("MainWindow", "ImageUtil"))
1379 | self.btn_open.setText(_translate("MainWindow", "打开"))
1380 | self.btn_save.setText(_translate("MainWindow", "保存"))
1381 | self.btn_undo.setText(_translate("MainWindow", "撤销"))
1382 | self.btn_confirm.setText(_translate("MainWindow", "确定"))
1383 | self.btn_cancel.setText(_translate("MainWindow", "取消"))
1384 | self.btn_clip.setText(_translate("MainWindow", "裁剪"))
1385 | self.btn_lightness.setText(_translate("MainWindow", "亮度"))
1386 | self.btn_watermark.setText(_translate("MainWindow", "水印"))
1387 | self.btn_blur.setText(_translate("MainWindow", "模糊"))
1388 | self.btn_compress.setText(_translate("MainWindow", "压缩"))
1389 | self.btn_change_bg.setText(_translate("MainWindow", "滤镜"))
1390 | self.btn_encode.setText(_translate("MainWindow", "加密"))
1391 | self.btn_decode.setText(_translate("MainWindow", "解密"))
1392 | self.btn_ocr.setText(_translate("MainWindow", "OCR"))
1393 | self.btn_screenshot.setText(_translate("MainWindow", "截图"))
1394 | self.btn_pick_color.setText(_translate("MainWindow", "取色"))
1395 | self.action.setText(_translate("MainWindow", "调整"))
1396 |
--------------------------------------------------------------------------------
/orc-dialog.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'orc-dialog.ui'
4 | #
5 | # Created by: PyQt5 UI code generator 5.13.0
6 | #
7 | # WARNING! All changes made in this file will be lost!
8 |
9 |
10 | from PyQt5 import QtCore, QtGui, QtWidgets
11 |
12 |
13 | class Ui_Dialog(object):
14 | def setupUi(self, Dialog):
15 | Dialog.setObjectName("Dialog")
16 | Dialog.resize(594, 302)
17 | self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
18 | self.verticalLayout.setObjectName("verticalLayout")
19 | self.plainTextEdit = QtWidgets.QPlainTextEdit(Dialog)
20 | self.plainTextEdit.setObjectName("plainTextEdit")
21 | self.verticalLayout.addWidget(self.plainTextEdit)
22 | self.horizontalLayout = QtWidgets.QHBoxLayout()
23 | self.horizontalLayout.setObjectName("horizontalLayout")
24 | spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
25 | self.horizontalLayout.addItem(spacerItem)
26 | self.btn_ok = QtWidgets.QPushButton(Dialog)
27 | self.btn_ok.setObjectName("btn_ok")
28 | self.horizontalLayout.addWidget(self.btn_ok)
29 | self.verticalLayout.addLayout(self.horizontalLayout)
30 |
31 | self.retranslateUi(Dialog)
32 | self.btn_ok.clicked.connect(Dialog.accept)
33 | QtCore.QMetaObject.connectSlotsByName(Dialog)
34 |
35 | def retranslateUi(self, Dialog):
36 | _translate = QtCore.QCoreApplication.translate
37 | Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
38 | self.btn_ok.setText(_translate("Dialog", "OK"))
39 |
--------------------------------------------------------------------------------
/orc-dialog.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | Dialog
4 |
5 |
6 |
7 | 0
8 | 0
9 | 594
10 | 302
11 |
12 |
13 |
14 | Dialog
15 |
16 |
17 | -
18 |
19 |
20 | -
21 |
22 |
-
23 |
24 |
25 | Qt::Horizontal
26 |
27 |
28 |
29 | 40
30 | 20
31 |
32 |
33 |
34 |
35 | -
36 |
37 |
38 | OK
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 | btn_ok
50 | clicked()
51 | Dialog
52 | accept()
53 |
54 |
55 | 266
56 | 193
57 |
58 |
59 | 199
60 | 149
61 |
62 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/resource/lenna.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZekeTian/ImageUtils/af2adfe8b4457cae95e2bb6a0a4200ca5611344d/resource/lenna.png
--------------------------------------------------------------------------------
/resource/界面运行图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZekeTian/ImageUtils/af2adfe8b4457cae95e2bb6a0a4200ca5611344d/resource/界面运行图.png
--------------------------------------------------------------------------------
/watermark-dialog.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'watermark-dialog.ui'
4 | #
5 | # Created by: PyQt5 UI code generator 5.13.0
6 | #
7 | # WARNING! All changes made in this file will be lost!
8 |
9 |
10 | from PyQt5 import QtCore, QtGui, QtWidgets
11 |
12 |
13 | class Ui_Dialog(object):
14 | def setupUi(self, Dialog):
15 | Dialog.setObjectName("Dialog")
16 | Dialog.resize(400, 100)
17 | self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
18 | self.verticalLayout.setObjectName("verticalLayout")
19 | self.lineEdit = QtWidgets.QLineEdit(Dialog)
20 | self.lineEdit.setObjectName("lineEdit")
21 | self.verticalLayout.addWidget(self.lineEdit)
22 | self.horizontalLayout = QtWidgets.QHBoxLayout()
23 | self.horizontalLayout.setSpacing(5)
24 | self.horizontalLayout.setObjectName("horizontalLayout")
25 | self.comboBox = QtWidgets.QComboBox(Dialog)
26 | self.comboBox.setObjectName("comboBox")
27 | self.comboBox.addItem("")
28 | self.comboBox.addItem("")
29 | self.comboBox.addItem("")
30 | self.comboBox.addItem("")
31 | self.comboBox.addItem("")
32 | self.horizontalLayout.addWidget(self.comboBox)
33 | self.btn_confirm = QtWidgets.QDialogButtonBox(Dialog)
34 | self.btn_confirm.setOrientation(QtCore.Qt.Horizontal)
35 | self.btn_confirm.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
36 | self.btn_confirm.setObjectName("btn_confirm")
37 | self.horizontalLayout.addWidget(self.btn_confirm)
38 | self.verticalLayout.addLayout(self.horizontalLayout)
39 |
40 | self.retranslateUi(Dialog)
41 | self.btn_confirm.accepted.connect(Dialog.accept)
42 | self.btn_confirm.rejected.connect(Dialog.reject)
43 | QtCore.QMetaObject.connectSlotsByName(Dialog)
44 |
45 | def retranslateUi(self, Dialog):
46 | _translate = QtCore.QCoreApplication.translate
47 | Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
48 | self.comboBox.setItemText(0, _translate("Dialog", "左上角"))
49 | self.comboBox.setItemText(1, _translate("Dialog", "右上角"))
50 | self.comboBox.setItemText(2, _translate("Dialog", "中间"))
51 | self.comboBox.setItemText(3, _translate("Dialog", "左下角"))
52 | self.comboBox.setItemText(4, _translate("Dialog", "右下角"))
53 |
--------------------------------------------------------------------------------
/watermark-dialog.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | Dialog
4 |
5 |
6 |
7 | 0
8 | 0
9 | 400
10 | 100
11 |
12 |
13 |
14 | Dialog
15 |
16 |
17 | -
18 |
19 |
20 | -
21 |
22 |
23 | 5
24 |
25 |
-
26 |
27 |
-
28 |
29 | 左上角
30 |
31 |
32 | -
33 |
34 | 右上角
35 |
36 |
37 | -
38 |
39 | 中间
40 |
41 |
42 | -
43 |
44 | 左下角
45 |
46 |
47 | -
48 |
49 | 右下角
50 |
51 |
52 |
53 |
54 | -
55 |
56 |
57 | Qt::Horizontal
58 |
59 |
60 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | btn_confirm
72 | accepted()
73 | Dialog
74 | accept()
75 |
76 |
77 | 248
78 | 254
79 |
80 |
81 | 157
82 | 274
83 |
84 |
85 |
86 |
87 | btn_confirm
88 | rejected()
89 | Dialog
90 | reject()
91 |
92 |
93 | 316
94 | 260
95 |
96 |
97 | 286
98 | 274
99 |
100 |
101 |
102 |
103 |
104 |
--------------------------------------------------------------------------------