Guest User

Untitled

a guest
Dec 10th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.10 KB | None | 0 0
  1. from PyQt5.QtWidgets import QMainWindow, QApplication, QMessageBox
  2. from PyQt5.QtWidgets import QTableWidgetItem
  3. from PyQt5.QtCore import Qt, QThread, pyqtSignal
  4. from PyQt5.QtGui import QTextDocument
  5. from main import Ui_MainWindow
  6. import paho.mqtt.client as mqtt
  7. import mysql.connector
  8. import os
  9. import sys
  10. import getpass
  11. import pygame
  12. user = getpass.getuser()
  13.  
  14. if sys.platform == 'win32':
  15. messages_dir = 'C:/Users/{}/Documents/kontrol/'.format(user)
  16. messages_path = 'C:/Users/{}/Documents/kontrol/messages'.format(user)
  17. elif sys.platform == 'linux':
  18. messages_dir = os.path.relpath(
  19. '/home/{}/.local/share/kontrol/'.format(user))
  20. messages_path = os.path.relpath(
  21. '/home/{}/.local/share/kontrol/messages'.format(user))
  22.  
  23. if getattr(sys, 'frozen', False):
  24. # frozen
  25. dir_ = os.path.dirname(sys.executable)
  26. else:
  27. # unfrozen
  28. dir_ = os.path.dirname(os.path.realpath(__file__))
  29.  
  30.  
  31. def on_message(client, userdata, message):
  32. msg = str(message.payload.decode('utf-8'))
  33. with open(messages_path, 'w') as op:
  34. op.write(msg + message.topic)
  35. op.close()
  36.  
  37.  
  38. class get_message(QThread):
  39. signal = pyqtSignal(str, str)
  40.  
  41. def __init__(self, parent=None):
  42. super(get_message, self).__init__(parent)
  43.  
  44. def run(self):
  45. while True:
  46. with open(messages_path, 'r') as op:
  47. message = op.readlines()
  48. op.close()
  49. for line in message:
  50. if 'room_light_cb' in line:
  51. topic = 'room_light_cb'
  52. msg = line.replace(topic, '')
  53. msg = msg.strip()
  54. if 'ON' in msg:
  55. self.signal.emit('ON', topic)
  56. elif 'OFF' in msg:
  57. self.signal.emit('OFF', topic)
  58. elif 'AUTO' in msg:
  59. self.signal.emit('AUTO', topic)
  60. else:
  61. self.signal.emit(msg, topic)
  62.  
  63. elif 'room_fan_cb' in line:
  64. topic = 'room_fan_cb'
  65. msg = line.replace(topic, '')
  66. msg = msg.strip()
  67. if 'ON' in msg:
  68. self.signal.emit('ON', topic)
  69. elif 'OFF' in msg:
  70. self.signal.emit('OFF', topic)
  71. elif 'AUTO' in msg:
  72. self.signal.emit('AUTO', topic)
  73. else:
  74. self.signal.emit(msg, topic)
  75.  
  76. elif 'room_air_cb' in line:
  77. topic = 'room_air_cb'
  78. msg = line.replace(topic, '')
  79. msg = msg.strip()
  80. if 'ON' in msg:
  81. self.signal.emit('ON', topic)
  82. elif 'OFF' in msg:
  83. self.signal.emit('OFF', topic)
  84. elif 'AUTO' in msg:
  85. self.signal.emit('AUTO', topic)
  86. else:
  87. self.signal.emit(msg, topic)
  88.  
  89. elif 'room_curtain_cb' in line:
  90. topic = 'room_curtain_cb'
  91. msg = line.replace(topic, '')
  92. msg = msg.strip()
  93. if 'ON' in msg:
  94. self.signal.emit('ON', topic)
  95. elif 'OFF' in msg:
  96. self.signal.emit('OFF', topic)
  97. elif 'AUTO' in msg:
  98. self.signal.emit('AUTO', topic)
  99. else:
  100. self.signal.emit(msg, topic)
  101.  
  102. elif 'room_door_cb' in line:
  103. topic = 'room_door_cb'
  104. msg = line.replace(topic, '')
  105. msg = msg.strip()
  106. if 'OPEN' in msg:
  107. self.signal.emit('OPEN', topic)
  108. elif 'CLOSE' in msg:
  109. self.signal.emit('CLOSE', topic)
  110.  
  111. elif 'room_temp_cb' in line:
  112. topic = 'room_temp_cb'
  113. msg = line.replace('room_temp_cb', '')
  114. msg = msg.strip()
  115. self.signal.emit(msg, topic)
  116.  
  117. elif 'room_alarm_cb' in line:
  118. topic = 'room_alarm_cb'
  119. msg = line.replace(topic, '')
  120. msg = msg.strip()
  121. self.signal.emit(msg, topic)
  122.  
  123. elif 'outdoor_light_cb' in line:
  124. topic = 'outdoor_light_cb'
  125. msg = line.replace(topic, '')
  126. msg = msg.strip()
  127. if 'ON' in msg:
  128. self.signal.emit('ON', topic)
  129. elif 'OFF' in msg:
  130. self.signal.emit('OFF', topic)
  131. elif 'AUTO' in msg:
  132. self.signal.emit('AUTO', topic)
  133. else:
  134. self.signal.emit(msg, topic)
  135.  
  136. elif 'irrigation' in line:
  137. topic = 'irrigation_cb'
  138. msg = line.replace(topic, '')
  139. msg = msg.strip()
  140. if 'ON' in msg:
  141. self.signal.emit('ON', topic)
  142. elif 'OFF' in msg:
  143. self.signal.emit('OFF', topic)
  144. elif 'AUTO' in msg:
  145. self.signal.emit('AUTO', topic)
  146. else:
  147. self.signal.emit(msg, topic)
  148.  
  149. elif 'outdoor_temp_cb' in line:
  150. topic = 'outdoor_temp_cb'
  151. msg = line.replace('outdoor_temp_cb', '')
  152. msg = msg.strip()
  153. self.signal.emit(msg, topic)
  154.  
  155. elif 'outdoor_hum_cb' in line:
  156. topic = 'outdoor_hum_cb'
  157. msg = line.replace(topic, '')
  158. msg = msg.strip()
  159. self.signal.emit(msg, topic)
  160.  
  161. elif 'outdoor_alarm_cb' in line:
  162. topic = 'outdoor_alarm_cb'
  163. msg = line.replace(topic, '')
  164. msg = msg.strip()
  165. self.signal.emit(msg, topic)
  166.  
  167. elif 'alarm_cb' in line:
  168. topic = 'alarm_cb'
  169. msg = line.replace(topic, '')
  170. msg = msg.strip()
  171. self.signal.emit(msg, topic)
  172. open(messages_path, 'w')
  173.  
  174.  
  175. class MainApp(QMainWindow, Ui_MainWindow):
  176.  
  177. def __init__(self, parent=None):
  178. super(MainApp, self).__init__(parent)
  179. QMainWindow.__init__(self)
  180. self.setupUi(self)
  181. self.file_dir()
  182. self.connect()
  183. self.conf_ui()
  184. self.conf_buttons()
  185. self.conf_sliders()
  186. self.thread = get_message()
  187. self.thread.start()
  188. self.thread.signal.connect(self.conf_labels)
  189.  
  190. def keyPressEvent(self, event):
  191. modifiers = QApplication.keyboardModifiers()
  192. if modifiers == Qt.AltModifier:
  193. if event.key() == Qt.Key_1:
  194. self.tabWidget.setCurrentIndex(0)
  195. elif event.key() == Qt.Key_2:
  196. self.tabWidget.setCurrentIndex(1)
  197. elif event.key() == Qt.Key_3:
  198. self.tabWidget.setCurrentIndex(2)
  199. elif event.key() == Qt.Key_4:
  200. self.tabWidget.setCurrentIndex(3)
  201.  
  202. def closeEvent(self, event):
  203. if sys.platform == 'win32':
  204. os.system('taskkill /f /im kontrol.exe')
  205. elif sys.platform == 'linux':
  206. os.system('pkill python3; pkill python; pkill kontrol')
  207. event.accept()
  208.  
  209. def file_dir(self):
  210. if not os.path.exists(messages_dir):
  211. os.makedirs(messages_dir)
  212. open(messages_path, 'w')
  213.  
  214. def connect(self):
  215. self.mqttc = mqtt.Client('Desktop')
  216. try:
  217. self.mqttc.connect('localhost')
  218. except Exception:
  219. QMessageBox.information(
  220. self, 'Information',
  221. 'Can't connect to MQTT Broker', QMessageBox.Ok)
  222. self.mqttc.on_message = on_message
  223. self.mqttc.loop_start()
  224. self.mqttc.subscribe([
  225. ('room_light_cb', 1), ('room_fan_cb', 1), ('room_air_cb', 1),
  226. ('room_curtain_cb', 1), ('room_door_cb', 1), ('room_temp_cb', 1),
  227. ('outdoor_light_cb', 1), ('irrigation_cb', 1), ('alarm_cb', 1),
  228. ('outdoor_temp_cb', 1), ('outdoor_hum_cb', 1),
  229. ('room_alarm_cb', 1), ('outdoor_alarm_cb', 1)])
  230.  
  231. def conf_ui(self):
  232. self.setFixedSize(901, 547)
  233.  
  234. def conf_buttons(self):
  235. # room
  236. self.r_light_b_on.clicked.connect(self.button_rlbon)
  237. self.r_light_b_off.clicked.connect(self.button_rlboff)
  238. self.r_light_b_auto.clicked.connect(self.button_rlbauto)
  239. self.r_fan_b_on.clicked.connect(self.button_rfbon)
  240. self.r_fan_b_off.clicked.connect(self.button_rfboff)
  241. self.r_fan_b_auto.clicked.connect(self.button_rfbauto)
  242. self.r_air_b_on.clicked.connect(self.button_rabon)
  243. self.r_air_b_off.clicked.connect(self.button_raboff)
  244. self.r_air_b_auto.clicked.connect(self.button_rabauto)
  245. self.r_curtain_b_on.clicked.connect(self.button_rcbon)
  246. self.r_curtain_b_off.clicked.connect(self.button_rcboff)
  247. self.r_curtain_b_auto.clicked.connect(self.button_rcbauto)
  248. self.r_door_b_open.clicked.connect(self.button_rdbopen)
  249. self.r_door_b_close.clicked.connect(self.button_rdbclose)
  250. self.r_b_open.clicked.connect(self.button_r_open)
  251. self.r_b_close.clicked.connect(self.button_r_close)
  252. self.r_b_alarm.clicked.connect(self.button_r_alarm)
  253.  
  254. # outdoor
  255. self.o_light_b_on.clicked.connect(self.button_olbon)
  256. self.o_light_b_off.clicked.connect(self.button_olboff)
  257. self.o_light_b_auto.clicked.connect(self.button_olbauto)
  258. self.o_irri_b_on.clicked.connect(self.button_oibon)
  259. self.o_irri_b_off.clicked.connect(self.button_oiboff)
  260. self.o_irri_b_auto.clicked.connect(self.button_oibauto)
  261. self.o_b_open.clicked.connect(self.button_o_open)
  262. self.o_b_close.clicked.connect(self.button_o_close)
  263. self.o_b_alarm.clicked.connect(self.button_o_alarm)
  264.  
  265. # message
  266. self.message_send.clicked.connect(self.button_message_send)
  267. self.message_clear.clicked.connect(self.button_message_clear)
  268. self.refresh.clicked.connect(self.db)
  269.  
  270. # Room
  271. def button_rlbon(self):
  272. self.mqttc.publish('room_light', '01')
  273.  
  274. def button_rlboff(self):
  275. self.mqttc.publish('room_light', '0')
  276. self.r_light_s.setValue(0)
  277.  
  278. def button_rlbauto(self):
  279. self.mqttc.publish('room_light', '02')
  280.  
  281. def button_rfbon(self):
  282. self.mqttc.publish('room_fan', '01')
  283.  
  284. def button_rfboff(self):
  285. self.mqttc.publish('room_fan', '0')
  286. self.r_fan_s.setValue(0)
  287.  
  288. def button_rfbauto(self):
  289. self.mqttc.publish('room_fan', '02')
  290.  
  291. def button_rabon(self):
  292. self.mqttc.publish('room_air', '01')
  293.  
  294. def button_raboff(self):
  295. self.mqttc.publish('room_air', '0')
  296.  
  297. def button_rabauto(self):
  298. self.mqttc.publish('room_air', '02')
  299.  
  300. def button_rcbon(self):
  301. self.mqttc.publish('room_curtain', '01')
  302.  
  303. def button_rcboff(self):
  304. self.mqttc.publish('room_curtain', '0')
  305.  
  306. def button_rcbauto(self):
  307. self.mqttc.publish('room_curtain', '02')
  308.  
  309. def button_rdbopen(self):
  310. self.mqttc.publish('room_door', '01')
  311.  
  312. def button_rdbclose(self):
  313. self.mqttc.publish('room_door', '0')
  314.  
  315. def button_r_open(self):
  316. self.button_rlbon()
  317. self.button_rfbon()
  318. self.button_rcbon()
  319. self.button_rabon()
  320.  
  321. def button_r_close(self):
  322. self.button_rlboff()
  323. self.button_rfboff()
  324. self.button_rcboff()
  325. self.button_raboff()
  326.  
  327. def button_r_alarm(self):
  328. doc = QTextDocument()
  329. doc.setHtml(self.label_r_alarm.text())
  330. if doc.toPlainText() == 'Active':
  331. self.mqttc.publish('room_alarm', '0')
  332. else:
  333. self.mqttc.publish('room_alarm', '01')
  334.  
  335. # Outdoor
  336. def button_olbon(self):
  337. self.mqttc.publish('outdoor_light', '01')
  338.  
  339. def button_olboff(self):
  340. self.mqttc.publish('outdoor_light', '0')
  341. self.o_light_s.setValue(0)
  342.  
  343. def button_olbauto(self):
  344. self.mqttc.publish('outdoor_light', '02')
  345.  
  346. def button_oibon(self):
  347. self.mqttc.publish('irrigation', '01')
  348.  
  349. def button_oiboff(self):
  350. self.mqttc.publish('irrigation', '0')
  351. self.o_irri_s.setValue(0)
  352.  
  353. def button_oibauto(self):
  354. self.mqttc.publish('irrigation', '02')
  355.  
  356. def button_message_send(self):
  357. self.mqttc.publish('message', self.message_text.toPlainText())
  358.  
  359. def button_message_clear(self):
  360. self.message_text.setText('')
  361.  
  362. def button_o_open(self):
  363. self.button_olbon()
  364. self.button_oibon()
  365.  
  366. def button_o_close(self):
  367. self.button_olboff()
  368. self.button_oiboff()
  369.  
  370. def button_o_alarm(self):
  371. doc = QTextDocument()
  372. doc.setHtml(self.label_o_alarm.text())
  373. if doc.toPlainText() == 'Active':
  374. self.mqttc.publish('outdoor_alarm', '0')
  375. else:
  376. self.mqttc.publish('outdoor_alarm', '01')
  377.  
  378. def conf_sliders(self):
  379. self.r_light_s.sliderReleased.connect(self.slider_rl)
  380. self.r_fan_s.sliderReleased.connect(self.slider_rf)
  381. self.o_light_s.sliderReleased.connect(self.slider_ol)
  382. self.o_irri_s.sliderReleased.connect(self.slider_oi)
  383. self.r_light_s.valueChanged.connect(self.slider_rl_)
  384. self.r_fan_s.valueChanged.connect(self.slider_rf_)
  385. self.o_light_s.valueChanged.connect(self.slider_ol_)
  386. self.o_irri_s.valueChanged.connect(self.slider_oi_)
  387. self.r_air_sb.valueChanged.connect(self.spin_ra)
  388.  
  389. def slider_rl(self):
  390. self.mqttc.publish('room_light', int(self.r_light_s.value()))
  391.  
  392. def slider_rl_(self):
  393. self.r_light_l2.setText(str(self.r_light_s.value()) + '%')
  394.  
  395. def slider_rf(self):
  396. self.mqttc.publish('room_fan', int(self.r_fan_s.value()))
  397.  
  398. def slider_rf_(self):
  399. self.r_fan_l2.setText(str(self.r_fan_s.value()) + '%')
  400.  
  401. def slider_ol(self):
  402. self.mqttc.publish('outdoor_light', int(self.o_light_s.value()))
  403.  
  404. def slider_ol_(self):
  405. self.o_light_l2.setText(str(self.o_light_s.value()) + '%')
  406.  
  407. def slider_oi(self):
  408. self.mqttc.publish('irrigation', int(self.o_irri_s.value()))
  409.  
  410. def slider_oi_(self):
  411. self.o_irri_l2.setText(str(self.o_irri_s.value()) + '%')
  412.  
  413. def spin_ra(self):
  414. self.mqttc.publish('room_air', self.r_air_sb.value())
  415.  
  416. def alarm(self, msg):
  417. pygame.mixer.pre_init(44100, 16, 2, 4096)
  418. pygame.init()
  419. if sys.platform == 'win32':
  420. song = pygame.mixer.Sound(
  421. 'C:/Program Files (x86)/kontrol/alarm.wav')
  422. elif sys.platform == 'linux':
  423. song = pygame.mixer.Sound(
  424. '/home/amr/Projects/kontrol/alarm.wav')
  425. song.play(-1)
  426. reply = QMessageBox.warning(None, 'Alarm', msg, QMessageBox.Ok)
  427. if reply == QMessageBox.Ok:
  428. song.stop()
  429.  
  430. def conf_labels(self, msg, topic):
  431.  
  432. if topic == 'room_light_cb':
  433. if msg == 'ON':
  434. self.r_label_light.setText('<p style="color:#2E7D32">ON</p>')
  435. self.r_label_light_level.setText(
  436. '<p style="color:#2E7D32">100%</p>')
  437. elif msg == 'OFF':
  438. self.r_label_light.setText('<p style="color:#C62828">OFF</p>')
  439. self.r_label_light_level.setText('-')
  440. elif msg == 'AUTO':
  441. self.r_label_light.setText('<p style="color:#1565C0">AUTO</p>')
  442. self.r_label_light_level.setText('-')
  443. else:
  444. self.r_label_light.setText('<p style="color:#2E7D32">ON</p>')
  445. self.r_label_light_level.setText(
  446. '<p style="color:#2E7D32">{}%</p>'.format(msg))
  447.  
  448. elif topic == 'room_fan_cb':
  449. if msg == 'ON':
  450. self.r_label_fan.setText('<p style="color:#2E7D32">ON</p>')
  451. self.r_label_fan_level.setText(
  452. '<p style="color:#2E7D32">100%</p>')
  453. elif msg == 'OFF':
  454. self.r_label_fan.setText('<p style="color:#C62828">OFF</p>')
  455. self.r_label_fan_level.setText('-')
  456. elif msg == 'AUTO':
  457. self.r_label_fan.setText('<p style="color:#1565C0">AUTO</p>')
  458. self.r_label_fan_level.setText('-')
  459. else:
  460. self.r_label_fan.setText('<p style="color:#2E7D32">ON</p>')
  461. self.r_label_fan_level.setText(
  462. '<p style="color:#2E7D32">{}%</p>'.format(msg))
  463.  
  464. elif topic == 'room_air_cb':
  465. if msg == 'ON':
  466. self.r_label_air.setText('<p style="color:#2E7D32">ON</p>')
  467. self.r_label_air_level.setText(
  468. '<p style="color:#2E7D32">21°</p>')
  469. elif msg == 'OFF':
  470. self.r_label_air.setText('<p style="color:#C62828">OFF</p>')
  471. self.r_label_air_level.setText('-')
  472. elif msg == 'AUTO':
  473. self.r_label_air.setText('<p style="color:#1565C0">AUTO</p>')
  474. self.r_label_air_level.setText('-')
  475. else:
  476. self.r_label_air.setText('<p style="color:#2E7D32">ON</p>')
  477. self.r_label_air_level.setText(
  478. '<p style="color:#2E7D32">{}%</p>'.format(msg))
  479.  
  480. elif topic == 'room_curtain_cb':
  481. if msg == 'ON':
  482. self.r_label_curtain.setText('<p style="color:#2E7D32">ON</p>')
  483. self.r_label_curtain_level.setText(
  484. '<p style="color:#2E7D32">100%</p>')
  485. elif msg == 'OFF':
  486. self.r_label_curtain.setText(
  487. '<p style="color:#C62828">OFF</p>')
  488. self.r_label_curtain_level.setText('-')
  489. elif msg == 'AUTO':
  490. self.r_label_curtain.setText(
  491. '<p style="color:#1565C0">AUTO</p>')
  492. self.r_label_curtain_level.setText('-')
  493.  
  494. elif topic == 'room_door_cb':
  495. if msg == 'ON':
  496. self.r_label_door.setText('<p style="color:#2E7D32">OPEN</p>')
  497. elif msg == 'OFF':
  498. self.r_label_door.setText(
  499. '<p style="color:#C62828">CLOSED</p>')
  500.  
  501. elif topic == 'room_temp_cb':
  502. if int(msg) > 22 and int(msg) < 28:
  503. self.r_label_temp.setText(
  504. '<p style="color:#2E7D32">{}°</p>'.format(msg))
  505. elif int(msg) <= 22:
  506. self.r_label_temp.setText(
  507. '<p style="color:#1565C0">{}°</p>'.format(msg))
  508. elif int(msg) >= 28:
  509. self.r_label_temp.setText(
  510. '<p style="color:#C62828">{}°</p>'.format(msg))
  511.  
  512. elif topic == 'room_alarm_cb':
  513. if msg == 'ON':
  514. self.label_r_alarm.setText(
  515. '<p style="color:#2E7D32">Active</p>')
  516. elif msg == 'OFF':
  517. self.label_r_alarm.setText(
  518. '<p style="color:#C62828">Inactive</p>')
  519.  
  520. elif topic == 'outdoor_light_cb':
  521. if msg == 'ON':
  522. self.o_label_light.setText('<p style="color:#2E7D32">ON</p>')
  523. self.o_label_light_level.setText(
  524. '<p style="color:#2E7D32">100%</p>')
  525. elif msg == 'OFF':
  526. self.o_label_light.setText('<p style="color:#C62828">OFF</p>')
  527. self.o_label_light_level.setText('-')
  528. elif msg == 'AUTO':
  529. self.o_label_light.setText('<p style="color:#1565C0">AUTO</p>')
  530. self.o_label_light_level.setText('-')
  531. else:
  532. self.o_label_light_setText('<p style="color:#2E7D32">ON</p>')
  533. self.o_label_light_level.setText(
  534. '<p style="color:#2E7D32">{}%</p>'.format(msg))
  535.  
  536. elif topic == 'irrigation_cb':
  537. if msg == 'ON':
  538. self.o_label_irri.setText('<p style="color:#2E7D32">ON</p>')
  539. self.o_label_irri_level.setText(
  540. '<p style="color:#2E7D32">100%</p>')
  541. elif msg == 'OFF':
  542. self.o_label_irri.setText('<p style="color:#C62828">OFF</p>')
  543. self.o_label_irri_level.setText('-')
  544. elif msg == 'AUTO':
  545. self.o_label_irri.setText('<p style="color:#1565C0">AUTO</p>')
  546. self.o_label_irri_level.setText('-')
  547. else:
  548. self.o_label_irri.setText('<p style="color:#2E7D32">ON</p>')
  549. self.o_label_irri_level.setText(
  550. '<p style="color:#2E7D32">{}%</p>'.format(msg))
  551.  
  552. elif topic == 'outdoor_temp_cb':
  553. if int(msg) >= 23 and int(msg) <= 27:
  554. self.o_label_temp.setText(
  555. '<p style="color:#2E7D32">{}°</p>'.format(msg))
  556. elif int(msg) <= 22:
  557. self.o_label_temp.setText(
  558. '<p style="color:#1565C0">{}°</p>'.format(msg))
  559. elif int(msg) >= 28:
  560. self.o_label_temp.setText(
  561. '<p style="color:#C62828">{}°</p>'.format(msg))
  562.  
  563. elif topic == 'outdoor_hum_cb':
  564. if int(msg) >= 45 and int(msg) <= 55:
  565. self.o_label_hum.setText(
  566. '<p style="color:#2E7D32">{}°</p>'.format(msg))
  567. else:
  568. self.o_label_hum.setText(
  569. '<p style="color:#C62828">{}°</p>'.format(msg))
  570.  
  571. elif topic == 'outdoor_alarm_cb':
  572. if msg == 'ON':
  573. self.label_o_alarm.setText(
  574. '<p style="color:#2E7D32">Active</p>')
  575. elif msg == 'OFF':
  576. self.label_o_alarm.setText(
  577. '<p style="color:#C62828">Inactive</p>')
  578.  
  579. elif topic == 'alarm_cb':
  580. self.alarm(msg)
  581.  
  582. def db(self):
  583. row = 0
  584. col_aname = 0
  585. col_code = 1
  586. col_year = 2
  587. col_uid = 3
  588. col_s1 = 4
  589. col_s2 = 5
  590. col_s3 = 6
  591. col_s4 = 7
  592. col_s5 = 8
  593.  
  594. cnx = mysql.connector.connect(
  595. user='root', password='mysql',
  596. host='localhost', database='assc')
  597. cursor = cnx.cursor()
  598. get_code = ("""SELECT aname, uid, code, year, s1, s2, s3,
  599. s4, s5 FROM students""")
  600. cursor.execute(get_code)
  601. for (aname, uid, code, year, s1, s2, s3, s4, s5) in cursor:
  602. self.table.setItem(row, col_code, QTableWidgetItem(str(code)))
  603. self.table.setItem(row, col_year, QTableWidgetItem(str(year)))
  604. self.table.setItem(row, col_uid, QTableWidgetItem(str(uid)))
  605. self.table.setItem(row, col_aname, QTableWidgetItem(str(aname)))
  606. self.table.setItem(row, col_s1, QTableWidgetItem(str(s1)))
  607. self.table.setItem(row, col_s2, QTableWidgetItem(str(s2)))
  608. self.table.setItem(row, col_s3, QTableWidgetItem(str(s3)))
  609. self.table.setItem(row, col_s4, QTableWidgetItem(str(s4)))
  610. self.table.setItem(row, col_s5, QTableWidgetItem(str(s5)))
  611. row = row + 1
  612. cnx.commit()
  613. cursor.close()
  614. cnx.close()
  615.  
  616.  
  617. def main():
  618. app = QApplication(sys.argv)
  619. window = MainApp()
  620. window.show()
  621. app.exec_()
  622.  
  623.  
  624. if __name__ == '__main__':
  625. main()
Add Comment
Please, Sign In to add comment