目标:
制作一个包含八个按钮的表情包界面,用于发送表情
实现思路:
1.创建界面
2.利用循环创建八个按钮并触发单个按钮的点击事件
3.使用emoji表情便于输出
实现方式:
导入类:
import sys
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QMessageBox
创建窗口代码以及界面布局:
class ButtonWidget(QWidget):
def __init__(self):
super().__init__()
# 初始化布局和按钮
self.initUI()
def initUI(self):
self.setFixedSize(190, 91)
vertical_layout = QVBoxLayout()
self.buttons = []
#界面由两行按钮组成,每行四个表情符号
button_texts = [
['😀', '😁', '😅', '🤣'],
['😊', '😏', '🫡', '😋']
]
#每个按钮大小为31x31像素,并绑定点击事件,点击时调用getEmoji方法并传入被点击按钮的文本(表情)。
# 异常会在控制台打印。
# 标题设为“表情选择”。
for row_texts in button_texts:
horizontal_layout = QHBoxLayout()
buttons_row = [QPushButton(text, self) for text in row_texts]
for button in buttons_row:
try:
button.setFixedSize(31, 31)
except Exception as e:
print(f"Error setting fixed size: {e}")
try:
button.clicked.connect(lambda checked, btn=button: self.getEmoji(btn.text()))
except Exception as e:
print(f"Error connecting signal: {e}")
self.buttons.append(button)
horizontal_layout.addWidget(button)
vertical_layout.addLayout(horizontal_layout)
self.setLayout(vertical_layout)
self.setWindowTitle('表情选择')
def getEmoji(self, emoji):
print(emoji)
展示界面:
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = ButtonWidget()
ex.show()
sys.exit(app.exec_())