pickup_passwd_window.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. from enum import Enum, unique
  2. from PyQt5.QtCore import QSize, Qt
  3. from PyQt5.QtGui import QFont
  4. from PyQt5.QtWidgets import QDialog, QMessageBox, QListWidgetItem, QLineEdit, QLabel, QSizePolicy
  5. # 导入取车确认界面
  6. import ui.pickupUi as pickupUi
  7. # 取车密码
  8. pickup_password = "123456"
  9. # 窗口返回值
  10. @unique
  11. class ResultReturn(Enum):
  12. DEFAULT = 0 # 默认
  13. OK = 1 # 成功
  14. CANCEL = 2 # 取消
  15. FAIL = 3 # 失败
  16. ERROR = 4 # 出错
  17. class PickupWindow(QDialog, pickupUi.Ui_Dialog):
  18. def __init__(self,tipstr): # 默认使用空列表传值
  19. super(PickupWindow, self).__init__()
  20. self.setupUi(self)
  21. self.setWindowTitle("密码确认")
  22. if tipstr is not None:
  23. self.input_passwd_label.setText(tipstr)
  24. # 设置初始窗口大小
  25. # self.resize(QSize(500, 300))
  26. # 取消帮助按钮显示
  27. self.setWindowFlags(Qt.WindowCloseButtonHint)
  28. # 隐藏密码
  29. self.password_lineEdit.setEchoMode(QLineEdit.Password)
  30. # 设置属性为模态框
  31. self.setWindowModality(Qt.ApplicationModal)
  32. # self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
  33. # 居中打印车位信息
  34. # self.pickup_verticalLayout.setAlignment(Qt.AlignCenter)
  35. # 居中显示密码框
  36. self.horizontalLayout_2.setAlignment(Qt.AlignCenter)
  37. # 绑定界面按钮点击动作
  38. self.cancel_pushButton.clicked.connect(self.cancel_event)
  39. self.confirm_pushButton.clicked.connect(self.confirm_event)
  40. # 显示信息
  41. # self.info = info
  42. # 窗口返回值
  43. self.res = ResultReturn.DEFAULT
  44. # # 车位信息字典
  45. # self.space_info_dict = info
  46. # # 获取主窗体传来的车位信息
  47. # def get_data_dict(self, space_info_dict):
  48. # self.space_info_dict = space_info_dict
  49. # 取消取车事件
  50. def cancel_event(self):
  51. self.hide()
  52. # 确认取车事件
  53. def confirm_event(self):
  54. # 重置返回值
  55. self.setResult(ResultReturn.DEFAULT)
  56. # 获取密码输入
  57. password = self.password_lineEdit.text()
  58. if password != pickup_password:
  59. self.password_lineEdit.clear()
  60. QMessageBox.warning(self, "提示", "密码错误,请重新输入", QMessageBox.Yes)
  61. else:
  62. self.setResult(ResultReturn.OK)
  63. self.hide()
  64. # 窗口显示处理
  65. def showEvent(self, event):
  66. # 重置返回值
  67. self.setResult(ResultReturn.DEFAULT)
  68. # 聚焦密码框
  69. self.password_lineEdit.setFocus()
  70. self.password_lineEdit.clear()
  71. # 自适应显示车位信息
  72. # self.draw_info()
  73. # 窗口隐藏处理
  74. def hideEvent(self, event):
  75. self.clearFocus()
  76. self.password_lineEdit.clear()
  77. # 窗口关闭处理
  78. def closeEvent(self, event):
  79. results = QMessageBox.question(self, '退出', '你确定要退出吗?', QMessageBox.Yes | QMessageBox.No,
  80. QMessageBox.No) # "退出"代表的是弹出框的标题,"你确认退出.."表示弹出框的内容
  81. if results == QMessageBox.Yes:
  82. event.accept() # 接受关闭事件
  83. else:
  84. event.ignore() # 忽略关闭事件
  85. # 设置窗口返回结果
  86. def setResult(self, res):
  87. self.res = res
  88. # 获取窗口返回结果
  89. def getResult(self):
  90. return self.res
  91. # 设置显示信息
  92. def set_info(self, info):
  93. # 需显示信息
  94. self.info = info
  95. # 获取显示信息
  96. def get_info(self):
  97. return self.info
  98. # 获取中文释义
  99. def get_name(self, key):
  100. if key == 'id':
  101. return '下标'
  102. elif key == 'table_id':
  103. return '表编号'
  104. elif key == 'floor':
  105. return '楼层'
  106. elif key == 'height':
  107. return '限高'
  108. elif key == 'car_number':
  109. return '车牌号'
  110. elif key == 'statu':
  111. return '车位状态'
  112. elif key == 'plate_color':
  113. return '号牌颜色'
  114. elif key == 'plate_type':
  115. return '号牌类型'
  116. elif key == 'plate_confidence':
  117. return '号牌可信度'
  118. elif key == 'recognition_time':
  119. return '识别时间'
  120. elif key == 'primary_key':
  121. return '唯一码'
  122. else:
  123. return '未知'
  124. # 反向获取数据库字段名
  125. def get_tableName(self, key):
  126. if key == '下标':
  127. return 'id'
  128. elif key == '表编号':
  129. return 'table_id'
  130. elif key == '楼层':
  131. return 'floor'
  132. elif key == '限高':
  133. return 'height'
  134. elif key == '车牌号':
  135. return 'car_number'
  136. elif key == '车位状态':
  137. return 'statu'
  138. elif key == '号牌颜色':
  139. return 'plate_color'
  140. elif key == '号牌类型':
  141. return 'plate_type'
  142. elif key == '号牌可信度':
  143. return 'plate_confidence'
  144. elif key == '识别时间':
  145. return 'recognition_time'
  146. elif key == '唯一码':
  147. return 'primary_key'
  148. else:
  149. return '未知'
  150. # 动态绘制信息
  151. def draw_info(self):
  152. font = QFont("楷体")
  153. n_len_scale = int(80 / len(self.info))
  154. n_size = 20 if n_len_scale < 20 else n_len_scale
  155. font.setPointSize(n_size)
  156. for i in self.info:
  157. qLabel = QLabel()
  158. qLabel.setFont(font)
  159. qLabel.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
  160. # qLabel.setAlignment(Qt.AlignLeft) # 左对齐
  161. qLabel.setAlignment(Qt.AlignCenter) # 居中对齐
  162. qLabel.setText(i)
  163. self.pickup_verticalLayout.addWidget(qLabel)
  164. # self.pickup_listWidget.clear()
  165. # for i in self.info:
  166. # qListWidgetItem = QListWidgetItem()
  167. # qListWidgetItem.setSizeHint(QSize(50, 65))
  168. # qListWidgetItem.setText(i)
  169. # self.pickup_listWidget.addItem(qListWidgetItem)