20241128143300

This commit is contained in:
zhaoyafan 2024-11-28 14:34:13 +08:00
parent d54479f42a
commit 43a1424d18
2 changed files with 112 additions and 7 deletions

65
index.html Normal file

File diff suppressed because one or more lines are too long

54
main.py
View File

@ -7,6 +7,7 @@ import clr
import time
import json
import queue
import ctypes
import shutil
import sqlite3
import logging
@ -18,17 +19,17 @@ import win32print
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QLabel, QComboBox, QCheckBox, QLineEdit, QAction, QMenu, \
QMessageBox, QPushButton, QVBoxLayout, QHBoxLayout, QFileDialog, QDialog
from PyQt5.QtCore import Qt, QCoreApplication, QTimer, QPropertyAnimation
from PyQt5.QtGui import QPixmap, QIntValidator
from PyQt5.QtGui import QPixmap, QIntValidator, QFocusEvent
from threading import RLock
from flask import Flask, request
from flask import Flask, request, send_from_directory
flask_app = Flask(__name__)
def _flask_thread():
try:
flask_app.run(host='0.0.0.0', port=7746)
flask_app.run(host='127.0.0.1', port=7746)
except:
pass
@ -535,6 +536,17 @@ class CustomLineEdit(QLineEdit):
action_p.triggered.connect(self.paste)
menu.popup(self.mapToGlobal(event.pos()))
def focusInEvent(self, event: QFocusEvent):
super().focusInEvent(event)
self.focusChanged(event)
def focusOutEvent(self, event: QFocusEvent):
super().focusOutEvent(event)
self.focusChanged(event)
def focusChanged(self, event: QFocusEvent):
pass
class CustomLineEditNoPopup(QLineEdit):
def __init__(self, *args, **kwargs):
@ -558,6 +570,13 @@ class CustomLabel(QLabel):
'font-size: 12px; font-family: \'Microsoft YaHei\'; color: #0C0C0C; border: 1px solid #0C0C0C;')
class CustomText(QLabel):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setStyleSheet(
'font-size: 12px; font-family: \'Microsoft YaHei\'; color: #F00000;')
class CustomComboBox(QComboBox):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@ -586,7 +605,7 @@ class MainWindow(QMainWindow):
def __init__(self, logger: Logger):
super().__init__()
self.app_name = '标签打印'
self.app_version = ('1.0.5', '20241022', 'zhaoyafan', 'zhaoyafan@foxmail.com', 'https://www.fanscloud.net/')
self.app_version = ('1.0.6', '20241128', 'zhaoyafan', 'zhaoyafan@foxmail.com', 'https://www.fanscloud.net/')
self.logger = logger
self.toast = ToastNotification()
self.setting = Setting(
@ -604,9 +623,10 @@ class MainWindow(QMainWindow):
self.task_timer = QTimer(self)
self.task_timer.timeout.connect(self.task_execute)
self.task_timer.start(100)
self.capslock_state_timer = QTimer(self)
self.capslock_state_timer.timeout.connect(self.update_capslock_state)
self.setWindowTitle(self.app_name)
self.setGeometry(0, 0, 600, 400)
self.statusBar()
self.menubar = self.menuBar()
filemenu = self.menubar.addMenu('设置')
self.blockRepeatAction = QAction('禁止重复打印', self, checkable=True)
@ -713,16 +733,21 @@ class MainWindow(QMainWindow):
# Scan
self.edtSCN = CustomLineEdit('')
self.edtSCN.setStyleSheet(
'QLineEdit {font-size: 28px; font-family: \'Microsoft YaHei\'; color: #000000; background-color: #FFFFCC;}')
'QLineEdit {font-size: 28px; font-family: \'Roboto Mono\',Consolas,\'Microsoft YaHei\'; color: #000000; background-color: #FFFFCC;}')
self.edtSCN.setFixedSize(455, 45)
self.edtSCN.focusChanged = self.on_print_scan_focus_change
r_layout_3.addWidget(self.edtSCN)
# Print button
self.butSPT = CustomPushButton('打印')
self.butSPT.setStyleSheet('font-size: 18px; font-family: \'Microsoft YaHei\'; color: #0C0C0C;')
self.butSPT.setFixedSize(455, 45)
self.butSPT.clicked.connect(self.on_start_printing)
self.edtSCN.returnPressed.connect(self.on_print_scan_enter)
r_layout_3.addWidget(self.butSPT)
# CapsLock State
self.TxtCAP = CustomText('')
self.TxtCAP.setFixedSize(205, 15)
r_layout_3.addWidget(self.TxtCAP)
# 显示界面
central_widget = QWidget()
central_widget.setLayout(m_layout_0)
@ -756,6 +781,12 @@ class MainWindow(QMainWindow):
else:
break
def update_capslock_state(self):
if (ctypes.windll.user32.GetKeyState(0x14) != 0) == 1:
self.TxtCAP.setText('大写锁定已开启')
else:
self.TxtCAP.setText('')
def load_setting(self):
# load blockRepeat
self.blockRepeatAction.setChecked(bool(self.setting['blockRepeat']))
@ -988,6 +1019,12 @@ class MainWindow(QMainWindow):
def on_print_scan_enter(self):
self.input_scan_prohibited_enter or self.on_start_printing()
def on_print_scan_focus_change(self, event: QFocusEvent):
if (event.gotFocus()) == 1:
self.capslock_state_timer.start(250)
else:
self.capslock_state_timer.stop()
def on_start_printing(self, content=None):
edit = self.edtSCN
if (self.input_convert_letter == 1) == 1:
@ -1111,6 +1148,9 @@ if __name__ == '__main__':
else:
return 'Error'
@flask_app.route('/', methods=['GET'])
def index():
return send_from_directory(os.path.dirname(__file__), 'index.html')
flask_thread.start()
sys.exit(app.exec_())