解决思路:
使用 QSS(Qt Style Sheets)对 PyQt 控件的样式进行定制。
为不同的控件添加不同的样式,如背景颜色、字体、边框等。
修改后的代码:
import sys
import base64
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QTextEdit, QPushButton, QLineEdit, QMessageBox
class Base64Tool(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建布局
vbox = QVBoxLayout()
self.input_text = QTextEdit()
self.result_text = QTextEdit()
self.result_text.setReadOnly(True)
# 编码按钮
encode_button = QPushButton('Encode')
encode_button.clicked.connect(self.encode)
# 解码按钮
decode_button = QPushButton('Decode')
decode_button.clicked.connect(self.decode)
# 复制按钮
copy_button = QPushButton('Copy Result')
copy_button.clicked.connect(self.copy_result)
# 水平布局用于放置按钮
hbox = QHBoxLayout()
hbox.addWidget(encode_button)
hbox.addWidget(decode_button)
hbox.addWidget(copy_button)
vbox.addWidget(self.input_text)
vbox.addLayout(hbox)
vbox.addWidget(self.result_text)
self.setLayout(vbox)
self.setWindowTitle('Base64 Tool')
# 应用样式表
self.setStyleSheet(self.get_stylesheet())
self.show()
def encode(self):
input_data = self.input_text.toPlainText()
try:
encoded_data = base64.b64encode(input_data.encode()).decode()
self.result_text.setText(encoded_data)
except Exception as e:
QMessageBox.critical(self, "Error", str(e))
def decode(self):
input_data = self.input_text.toPlainText()
try:
decoded_data = base64.b64decode(input_data.encode()).decode()
self.result_text.setText(decoded_data)
except Exception as e:
QMessageBox.critical(self, "Error", str(e))
def copy_result(self):
result = self.result_text.toPlainText()
clipboard = QApplication.clipboard()
clipboard.setText(result)
def get_stylesheet(self):
return """
QWidget {
background-color: #f0f0f0;
}
QTextEdit {
background-color: white;
border: 2px solid #ccc;
border-radius: 5px;
padding: 5px;
}
QPushButton {
background-color: #4CAF50;
border: none;
color: white;
padding: 10px 20px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
border-radius: 5px;
}
QPushButton:hover {
background-color: #45a049;
}
"""
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Base64Tool()
sys.exit(app.exec_())
代码解释:
get_stylesheet 方法:
按钮的背景颜色为 #4CAF50,无边框,文本为白色,内边距为 10px 20px,字体大小为 16px,外边距为 4px 2px,鼠标指针为指针样式,边框半径为 5px。
QPushButton:hover 部分:当鼠标悬停在按钮上时,按钮的背景颜色变为 #45a049。
该方法返回一个包含 QSS 样式的字符串。
QWidget 部分:设置整个窗口的背景颜色为 #f0f0f0。
QTextEdit 部分:设置输入和结果文本框的背景颜色为白色,边框为 2px 宽的 #ccc 颜色,边框半径为 5px,内边距为 5px。
QPushButton 部分:
使用方法:
复制上述代码到一个 Python 文件,例如 base64_tool.py。
在命令行中运行 python base64_tool.py。
输入需要编码或解码的内容,点击相应的按钮,点击 Copy Result 按钮复制结果。
通过上述修改,你的 Base64 工具界面将更加美观,按钮会有不同的颜色和悬停效果,文本框也会有边框和圆角。你可以根据自己的喜好调整 QSS 中的样式属性,以达到更理想的效果。例如,你可以改变颜色、字体、边框等属性,也可以为不同的控件添加更多的样式规则,如阴影、渐变等。
标签:text,解码,base64,pyqt,result,按钮,button,input,self From: https://www.cnblogs.com/o-O-oO/p/18673841原创 00 老猫coder