LISHUZUOXUN_yangjiang/LSZXPagesLibrary/keyboard_layout.py

153 lines
5.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QLabel, QVBoxLayout, QHBoxLayout, QWidget, QPushButton, QGridLayout, QLineEdit
DEFAULT_CONTENT = "请输入人员编号"
class Keyboard:
def __init__(self):
super().__init__()
# 输入框的内容
self.editor_content = ""
# 键盘输入框
self.id_label = self._init_id_label()
self.id_editor = self._init_id_editor()
# 输入框布局
self.input_layout = QHBoxLayout()
self.input_layout.addWidget(self.id_label, 20)
self.input_layout.addWidget(self.id_editor, 80)
self.input_layout.setContentsMargins(0, 0, 0, 20)
# 数字按键布局
self.number_grid_layout = QGridLayout()
self.key_1 = self._init_key_button(name="1")
self.key_2 = self._init_key_button(name="2")
self.key_3 = self._init_key_button(name="3")
self.key_4 = self._init_key_button(name="4")
self.key_5 = self._init_key_button(name="5")
self.key_6 = self._init_key_button(name="6")
self.key_7 = self._init_key_button(name="7")
self.key_8 = self._init_key_button(name="8")
self.key_9 = self._init_key_button(name="9")
self.key_0 = self._init_key_button(name="0")
self.key_del = self._init_key_button(name="清空")
# 设置按键响应
self.key_1.clicked.connect(self.update_content_func("1"))
self.key_2.clicked.connect(self.update_content_func("2"))
self.key_3.clicked.connect(self.update_content_func("3"))
self.key_4.clicked.connect(self.update_content_func("4"))
self.key_5.clicked.connect(self.update_content_func("5"))
self.key_6.clicked.connect(self.update_content_func("6"))
self.key_7.clicked.connect(self.update_content_func("7"))
self.key_8.clicked.connect(self.update_content_func("8"))
self.key_9.clicked.connect(self.update_content_func("9"))
self.key_0.clicked.connect(self.update_content_func("0"))
self.key_del.clicked.connect(self.delete_content)
# 把按键加入网格
self.number_grid_layout.addWidget(self.key_1, 0, 0)
self.number_grid_layout.addWidget(self.key_2, 0, 1)
self.number_grid_layout.addWidget(self.key_3, 0, 2)
self.number_grid_layout.addWidget(self.key_4, 1, 0)
self.number_grid_layout.addWidget(self.key_5, 1, 1)
self.number_grid_layout.addWidget(self.key_6, 1, 2)
self.number_grid_layout.addWidget(self.key_7, 2, 0)
self.number_grid_layout.addWidget(self.key_8, 2, 1)
self.number_grid_layout.addWidget(self.key_9, 2, 2)
self.number_grid_layout.addWidget(self.key_0, 3, 0)
self.number_grid_layout.addWidget(self.key_del, 3, 1, 1, 2)
# 给小键盘添加一个QWidget用于设置小键盘的背景色
self.number_grid_widget = QWidget()
self.number_grid_widget.setLayout(self.number_grid_layout)
self.number_grid_widget.setStyleSheet(
"border-radius: 4px;"
"background-color: #f4f4f4;"
)
self.number_grid_widget_layout = QVBoxLayout()
self.number_grid_widget_layout.setContentsMargins(0, 0, 0, 0)
self.number_grid_widget_layout.addWidget(self.number_grid_widget)
# 布局
self.layout = QVBoxLayout()
self.layout.addLayout(self.input_layout)
self.layout.addLayout(self.number_grid_widget_layout)
self.layout.setContentsMargins(0, 20, 0, 20)
# 对外APi获得当前输入框的内容
def get_content(self):
return self.editor_content
# 对外api设置触发函数
def connect(self, func):
self.id_editor.textChanged.connect(func)
def get_layout(self):
return self.layout
def update_content_func(self, new_content):
def _update_func():
# 如果内容里面不是数字
if not self.editor_content.isdigit():
self.editor_content = new_content
else:
self.editor_content += new_content
self.id_editor.setText(self.editor_content)
self.id_editor.setStyleSheet(
"font: 28px \"Microsoft YaHei UI\";"
"letter-spacing: 2px;"
"color: #222222;"
"padding-left: 8px;"
"border: 1px solid #222222;"
"border-radius: 4px;"
)
return _update_func
def delete_content(self):
self.editor_content = ""
self.id_editor.setText(DEFAULT_CONTENT)
self.id_editor.setStyleSheet(
"font: 26px \"Microsoft YaHei UI\";"
"color: #8a8a8a;"
"padding-left: 8px;"
"border: 1px solid #222222;"
"border-radius: 4px;"
)
@staticmethod
def _init_id_label():
id_label = QLabel("编号:")
id_label.setAlignment(Qt.AlignCenter)
id_label.setStyleSheet(
"font: 28px \"Microsoft YaHei UI\";"
"letter-spacing: 4px;"
)
return id_label
@staticmethod
def _init_id_editor():
input_id_label = QLineEdit(DEFAULT_CONTENT)
input_id_label.setEnabled(False)
input_id_label.setFixedHeight(60)
input_id_label.setStyleSheet(
"font: 26px \"Microsoft YaHei UI\";"
"color: #8a8a8a;"
"padding-left: 8px;"
"border-radius: 4px;"
)
return input_id_label
@staticmethod
def _init_key_button(name):
key_button = QPushButton(name)
key_button.setStyleSheet(
"font: 500 45px \"Microsoft YaHei UI\";"
"background-color: #ffffff;"
"height: 150%;"
"border: none;"
"border-radius: 4px;"
"margin: 4 4 4 4;"
)
return key_button