华荣三照明、合信、荣欣八组合馈电
This commit is contained in:
136
QT5_Project/KD_ZM_6/DialogModifyText.py
Normal file
136
QT5_Project/KD_ZM_6/DialogModifyText.py
Normal file
@ -0,0 +1,136 @@
|
||||
import sys
|
||||
from PyQt5.QtWidgets import QApplication, QDialog, QLineEdit, QLabel, QWidget, QPushButton, QMessageBox, QComboBox, QDialogButtonBox, QShortcut
|
||||
from PyQt5 import uic
|
||||
from PyQt5.QtGui import QKeySequence
|
||||
from PyQt5.QtCore import Qt, QEvent, QObject, QTimer
|
||||
|
||||
sys_path = sys.path[0].replace("\\", "/")
|
||||
|
||||
ui_file_path = sys_path + "/DialogModifyText.ui"
|
||||
|
||||
def modify_string(string, index, new_char):
|
||||
string_list = list(string)
|
||||
string_list[index] = new_char
|
||||
modified_string = ''.join(string_list)
|
||||
return modified_string
|
||||
|
||||
def chr_adjust(old_chr, dif : int) :
|
||||
new_chr = old_chr
|
||||
if old_chr == '+':
|
||||
new_chr = '-'
|
||||
elif old_chr == '-':
|
||||
new_chr = '+'
|
||||
elif dif > 0:
|
||||
new_chr = chr(ord(old_chr) + 1)
|
||||
if new_chr > '9' :
|
||||
new_chr = '0'
|
||||
else :
|
||||
new_chr = chr(ord(old_chr) - 1)
|
||||
if new_chr < '0' :
|
||||
new_chr = '9'
|
||||
return new_chr
|
||||
|
||||
class DialogModifyText(QDialog):
|
||||
def __init__(self, main_window, parent=None):
|
||||
super(DialogModifyText, self).__init__(parent)
|
||||
# Load UI file
|
||||
uic.loadUi(ui_file_path, self)
|
||||
|
||||
self.Text = "2019-09-10 10:22:23"
|
||||
self.select_bit = 0
|
||||
self.main_window = main_window
|
||||
|
||||
self.setWindowTitle("参数修改")
|
||||
self.setWindowFlag(Qt.FramelessWindowHint)
|
||||
self.buttonBox.button(QDialogButtonBox.Ok).setText('确定')
|
||||
self.buttonBox.button(QDialogButtonBox.Cancel).setText('取消')
|
||||
|
||||
self.buttonBox.clicked.connect(self.dialog_button_ok_clicked)
|
||||
|
||||
modify_text = self.Text
|
||||
self.update_modify_info(modify_text, "缺省多字符修改")
|
||||
|
||||
#让定时器周期刷修改字符串, 防止出现焦点切换时选中消失的情况
|
||||
self.timer = QTimer(self)
|
||||
self.timer.timeout.connect(self.timeout_modify_string_refresh)
|
||||
self.timer.start(100)
|
||||
|
||||
#定义4个快捷键, Key_Enter, Key_Escape经常被各类程序模块使用, 用Key_End, 与Key_Home来代替
|
||||
QShortcut(QKeySequence(Qt.Key_Up), self, activated=self.key_increase_parameter)
|
||||
QShortcut(QKeySequence(Qt.Key_Down), self, activated=self.key_decrease_parameter)
|
||||
QShortcut(QKeySequence(Qt.Key_PageDown), self, activated=self.key_enter_process)
|
||||
QShortcut(QKeySequence(Qt.Key_PageUp), self, activated=self.key_escape_process)
|
||||
QShortcut(QKeySequence(Qt.Key_End), self, activated=self.key_enter_process)
|
||||
QShortcut(QKeySequence(Qt.Key_Home), self, activated=self.key_escape_process)
|
||||
|
||||
@property
|
||||
def value(self):
|
||||
return self.Text
|
||||
|
||||
def timeout_modify_string_refresh(self) :
|
||||
line_modify : QLineEdit = self.lineEdit
|
||||
modify_str : str = line_modify.text()
|
||||
self.update_modify_string(modify_str)
|
||||
|
||||
def update_modify_info(self, modify_str, caption : str) :
|
||||
if hasattr(self, "label") :
|
||||
label : QLabel = self.label
|
||||
label.setText(caption)
|
||||
self.update_modify_string(modify_str)
|
||||
|
||||
def update_modify_string(self, modify_str : str) :
|
||||
line_modify : QLineEdit = self.lineEdit
|
||||
line_modify.setText(modify_str)
|
||||
|
||||
if self.select_bit < len(modify_str) :
|
||||
if modify_str[self.select_bit] == ' ':
|
||||
self.key_enter_process()
|
||||
|
||||
# 设置选择从第self.select_bit个字符开始,长度为1
|
||||
line_modify.setSelection(self.select_bit, 1)
|
||||
|
||||
def key_increase_parameter(self):
|
||||
line_modify : QLineEdit = self.lineEdit
|
||||
text : str = line_modify.text()
|
||||
if self.select_bit < len(text) :
|
||||
old_chr = text[self.select_bit]
|
||||
new_chr = chr_adjust(old_chr, 1)
|
||||
new_modify_text = modify_string(text, self.select_bit, new_chr)
|
||||
self.update_modify_string(new_modify_text)
|
||||
|
||||
def key_decrease_parameter(self):
|
||||
line_modify : QLineEdit = self.lineEdit
|
||||
text : str = line_modify.text()
|
||||
if self.select_bit < len(text) :
|
||||
old_chr = text[self.select_bit]
|
||||
new_chr = chr_adjust(old_chr, -1)
|
||||
new_modify_text = modify_string(text, self.select_bit, new_chr)
|
||||
self.update_modify_string(new_modify_text)
|
||||
|
||||
def key_enter_process(self):
|
||||
line_modify : QLineEdit = self.lineEdit
|
||||
text : str = line_modify.text()
|
||||
|
||||
if self.select_bit < len(text) - 1:
|
||||
self.select_bit += 1
|
||||
if not str.isdigit(text[self.select_bit]) :
|
||||
self.key_enter_process()
|
||||
else :
|
||||
self.update_modify_string(text)
|
||||
else :
|
||||
self.buttonBox.button(QDialogButtonBox.Ok).click()
|
||||
|
||||
def key_escape_process(self):
|
||||
self.buttonBox.button(QDialogButtonBox.Cancel).click()
|
||||
|
||||
def dialog_button_ok_clicked(self, button):
|
||||
if button == self.buttonBox.button(QDialogButtonBox.Ok) :
|
||||
line_modify : QLineEdit = self.lineEdit
|
||||
self.Text = line_modify.text()
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QApplication(sys.argv)
|
||||
dialog = DialogModifyText(None)
|
||||
dialog.show()
|
||||
dialog.exec_()
|
||||
sys.exit(0)
|
||||
Reference in New Issue
Block a user