Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.11 KB | None | 0 0
  1. import sys
  2. from PyQt5.QtGui import *
  3. from PyQt5.QtCore import *
  4. from PyQt5.QtWidgets import *
  5.  
  6. from pathlib import Path
  7.  
  8. account = None
  9. loginwindow = None
  10. mainwindow = None
  11. formwidget = None
  12. subjectwindow = None
  13. #editassignmentwindow = None
  14.  
  15. class Information:
  16.  
  17. def __init__(self):
  18.  
  19. print("something")
  20.  
  21. def login(self, username, password):
  22. self.filep = Path("accounts.txt")
  23. self.fusername = False
  24. self.fpassword = False
  25.  
  26. if self.filep.is_file():
  27. print("Found accounts file.")
  28.  
  29. self.file = open("accounts.txt", "r")
  30. self.u = True
  31. for line in self.file:
  32. self.line = line.strip("\n")
  33. if self.u == True:
  34. if self.line == username:
  35. self.fusername = True
  36. print("Username true")
  37. self.u = False
  38. else:
  39. if self.line == password:
  40. self.fpassword = True
  41. print("password true")
  42. self.u = True
  43. self.file.close()
  44.  
  45. if (self.fusername == True) and (self.fpassword == True):
  46. global account
  47. account = username
  48. return True
  49. else:
  50. return False
  51. else:
  52. print("File not found.")
  53. return False
  54.  
  55. class MainWindow(QMainWindow):
  56.  
  57. def __init__(self, parent=None):
  58.  
  59. super().__init__()
  60.  
  61. self.title = 'Agenda'
  62. self.left = 10
  63. self.top = 10
  64. self.width = 640
  65. self.height = 400
  66.  
  67. self.initUI()
  68.  
  69. def initUI(self):
  70.  
  71. self.setWindowTitle(self.title)
  72. self.setGeometry(self.left, self.top, self.width, self.height)
  73.  
  74. global formwidget
  75. formwidget = FormWidget(self)
  76. self.setCentralWidget(formwidget)
  77.  
  78. '''global editassignmentwindow
  79. editassignmentwindow = EditAssignmentWindow()
  80. editassignmentwindow.hide()'''
  81.  
  82. self.center()
  83.  
  84. print("Main window initialized.")
  85.  
  86. def update(self):
  87.  
  88. self.setCentralWidget(formwidget)
  89.  
  90. def center(self):
  91.  
  92. qr = self.frameGeometry()
  93. cp = QDesktopWidget().availableGeometry().center()
  94. qr.moveCenter(cp)
  95. self.move(qr.topLeft())
  96.  
  97. def closeEvent(self, event):
  98.  
  99. print("Main window closed.")
  100.  
  101. class FormWidget(QWidget):
  102.  
  103. def __init__(self, parent):
  104.  
  105. super(FormWidget, self).__init__(parent)
  106.  
  107. #open schedule file
  108.  
  109. self.file = open(account + "_schedule" + ".txt", "r")
  110.  
  111. '''self.filelen = 0
  112. for line in self.file:
  113. print(line)
  114. self.filelen = self.filelen + 1
  115. print("there are " + str(self.filelen) + " lines in the file.")'''
  116.  
  117. #container widget
  118.  
  119. #file syntax is as follows
  120. # Assignment | Subject | Due Date
  121.  
  122. self.layout = QGridLayout(self)
  123.  
  124. self.assignmentdonec = []
  125. self.assignmentedit = []
  126.  
  127. self.filelen = 0
  128. for line in self.file:
  129.  
  130. self.line = line.split(",")
  131.  
  132. self.assignmentl = QLabel(self.line[0])
  133. self.layout.addWidget(self.assignmentl, self.filelen, 0, 1, 1)
  134.  
  135. self.subjectl = QLabel(self.line[1])
  136. self.layout.addWidget(self.subjectl, self.filelen, 1, 1, 1)
  137.  
  138. self.duedatel = QLabel(self.line[2])
  139. self.layout.addWidget(self.duedatel, self.filelen, 2, 1, 1)
  140.  
  141. self.assignmentdonec.append(QCheckBox(''))
  142. self.layout.addWidget(self.assignmentdonec[self.filelen], self.filelen, 3, 1, 1)
  143. self.assignmentdonec[self.filelen].stateChanged.connect(self.assignmentcheck)
  144.  
  145. self.assignmentedit.append(QPushButton('edit', self))
  146. self.layout.addWidget(self.assignmentedit[self.filelen], self.filelen, 4, 1, 1)
  147. self.assignmentedit[self.filelen].clicked[bool].connect(self.editassignmentbutton)
  148.  
  149.  
  150. self.filelen = self.filelen + 1
  151. self.file.close()
  152.  
  153. print("there are " + str(self.filelen) + " lines in the file.")
  154.  
  155. self.containerwidget = QWidget()
  156. self.containerwidget.setLayout(self.layout)
  157.  
  158. #scroll area
  159.  
  160. self.scroll = QScrollArea()
  161. self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
  162. self.scroll.setWidget(self.containerwidget)
  163.  
  164. #scroll area layer add
  165. self.vLayout = QGridLayout(self)
  166.  
  167. self.addab = QPushButton('Add Assignment', self)
  168. self.vLayout.addWidget(self.addab, 0, 1, 1, 1)
  169. self.addab.clicked[bool].connect(self.assignmentbutton)
  170.  
  171. self.addsb = QPushButton('Add Subject', self)
  172. self.vLayout.addWidget(self.addsb, 0, 2, 1, 1)
  173. self.addsb.clicked[bool].connect(self.subjectbutton)
  174.  
  175. self.testb = QPushButton('test', self)
  176. self.vLayout.addWidget(self.testb, 1, 0, 1, 1)
  177.  
  178. self.welcomel = QLabel("Welcome, " + account)
  179. self.vLayout.addWidget(self.welcomel, 0, 0, 1, 1)
  180.  
  181. self.vLayout.addWidget(self.scroll)
  182. self.vLayout.addWidget(self.scroll, 1, 1, 1, 2)
  183.  
  184.  
  185. self.setLayout(self.vLayout)
  186.  
  187.  
  188. '''vLayout = QVBoxLayout(self)
  189. vLayout.addWidget(self.scroll)
  190. self.setLayout(vLayout)'''
  191. #self.setLayout(self.layout)
  192.  
  193. def subjectbutton(self):
  194.  
  195. global subjectwindow
  196. subjectwindow = SubjectWindow()
  197. subjectwindow.show()
  198. print("Registration window displayed.")
  199.  
  200. def assignmentbutton(self):
  201.  
  202. self.addassignmentwindow = AddAssignmentWindow()
  203. self.addassignmentwindow.show()
  204.  
  205. def editassignmentbutton(self):
  206.  
  207. '''editassignmentwindow.update()
  208. editassignmentwindow.show()'''
  209. sending_button = self.sender()
  210. print(str(sending_button))
  211.  
  212. self.index = 0
  213. for x in self.assignmentedit:
  214. if x == sending_button:
  215. print("i found the dabbing")
  216. self.pos = self.index
  217. else:
  218. self.index = self.index + 1
  219. print(str(self.pos))
  220.  
  221.  
  222.  
  223. self.file = open(account + "_schedule" + ".txt", "r")
  224. self.index = 0
  225. for line in self.file:
  226. if self.index == self.pos:
  227. self.info = line.strip("\n")
  228. self.index = self.index + 1
  229. self.file.close()
  230.  
  231. self.info = self.info.split(",")
  232.  
  233. self.info[2] = QDate.fromString(self.info[2], 'yyyy-MM-dd')
  234.  
  235. self.editassignmentwindow = EditAssignmentWindow()
  236. self.editassignmentwindow.show()
  237. self.editassignmentwindow.update(self.info[0], self.info[1], self.info[2], self.pos)
  238.  
  239.  
  240. print(self.info)
  241.  
  242.  
  243. def assignmentcheck(self):
  244.  
  245. print("you dabbed")
  246. self.index = 0
  247. for x in self.assignmentdonec:
  248. if x.isChecked() == True:
  249. print("i found the dabber")
  250. self.pos = self.index
  251. else:
  252. self.index = self.index + 1
  253. print("I think it's this one here: " + str(self.assignmentdonec[self.pos]))
  254.  
  255. self.file = open(account + "_schedule" + ".txt", "r")
  256. self.lines = self.file.readlines()
  257. self.file.close()
  258.  
  259. self.index = 0
  260. self.file = open(account + "_schedule" + ".txt", "w")
  261. print("ready to delete")
  262. for line in self.lines:
  263. print("index: " + str(self.index) + " pos: " + str(self.pos))
  264. if self.index != self.pos:
  265. self.file.write(line)
  266. print(line)
  267. else:
  268. print("we deleted something")
  269. self.index = self.index + 1
  270. self.file.close()
  271. self.update()
  272. print("we done")
  273.  
  274. def update(self):
  275.  
  276. for i in reversed(range(self.layout.count())):
  277. self.layout.itemAt(i).widget().setParent(None)
  278. for i in range(self.layout.count()):
  279. print(i)
  280. print(self.layout)
  281.  
  282. print("cleared self.layout")
  283.  
  284. '''for i in reversed(range(self.vLayout.count())):
  285. self.vLayout.itemAt(i).widget().setParent(None)'''
  286.  
  287. print("cleared self.vLayout")
  288.  
  289. self.layout.removeWidget(self.containerwidget)
  290.  
  291. self.file = open(account + "_schedule" + ".txt", "r")
  292.  
  293. print("here3?")
  294. #self.layout = QGridLayout(self)
  295. print("^")
  296.  
  297. self.assignmentdonec = []
  298. self.assignmentedit = []
  299.  
  300. self.filelen = 0
  301. for line in self.file:
  302. self.line = line.split(",")
  303.  
  304. self.assignmentl = QLabel(self.line[0])
  305. self.layout.addWidget(self.assignmentl, self.filelen, 0, 1, 1)
  306.  
  307. self.subjectl = QLabel(self.line[1])
  308. self.layout.addWidget(self.subjectl, self.filelen, 1, 1, 1)
  309.  
  310. self.duedatel = QLabel(self.line[2])
  311. self.layout.addWidget(self.duedatel, self.filelen, 2, 1, 1)
  312.  
  313. self.assignmentdonec.append(QCheckBox(''))
  314. self.layout.addWidget(self.assignmentdonec[self.filelen], self.filelen, 3, 1, 1)
  315. self.assignmentdonec[self.filelen].stateChanged.connect(self.assignmentcheck)
  316.  
  317. self.assignmentedit.append(QPushButton('edit', self))
  318. self.layout.addWidget(self.assignmentedit[self.filelen], self.filelen, 4, 1, 1)
  319. self.assignmentedit[self.filelen].clicked[bool].connect(self.editassignmentbutton)
  320.  
  321. self.filelen = self.filelen + 1
  322. self.file.close()
  323.  
  324. self.containerwidget = QWidget()
  325. self.containerwidget.setLayout(self.layout)
  326.  
  327.  
  328. #scroll area
  329. self.scroll = QScrollArea()
  330. self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
  331. self.scroll.setWidget(self.containerwidget)
  332.  
  333. #scroll area layer add
  334. print("here1")
  335. #self.vLayout = QGridLayout(self)
  336. print("^")
  337.  
  338. self.addab = QPushButton('Add Assignment', self)
  339. self.vLayout.addWidget(self.addab, 0, 1, 1, 1)
  340. self.addab.clicked[bool].connect(self.assignmentbutton)
  341.  
  342. self.addsb = QPushButton('Add Subject', self)
  343. self.vLayout.addWidget(self.addsb, 0, 2, 1, 1)
  344. self.addsb.clicked[bool].connect(self.subjectbutton)
  345.  
  346. self.testb = QPushButton('test', self)
  347. self.vLayout.addWidget(self.testb, 1, 0, 1, 1)
  348.  
  349. self.welcomel = QLabel("Welcome, " + account)
  350. self.vLayout.addWidget(self.welcomel, 0, 0, 1, 1)
  351.  
  352. self.vLayout.addWidget(self.scroll)
  353. self.vLayout.addWidget(self.scroll, 1, 1, 1, 2)
  354.  
  355. print("here2")
  356. self.setLayout(self.vLayout)
  357. print("^")
  358.  
  359.  
  360. '''vLayout = QVBoxLayout(self)
  361. vLayout.addWidget(self.scroll)
  362. self.setLayout(vLayout)'''
  363. #self.setLayout(self.layout)
  364.  
  365. print("updated")
  366.  
  367. class SubjectWindow(QDialog):
  368.  
  369. def __init__(self):
  370.  
  371. super().__init__()
  372.  
  373. self.title = 'Add Subject'
  374. self.left = 10
  375. self.top = 10
  376. self.width = 200
  377. self.height = 200
  378. self.setWindowFlags(Qt.WindowStaysOnTopHint)
  379. self.setModal(1)
  380.  
  381. self.initUI()
  382.  
  383. def initUI(self):
  384.  
  385. self.setWindowTitle(self.title)
  386. self.setGeometry(self.left, self.top, self.width, self.height)
  387.  
  388. self.layout = QGridLayout()
  389.  
  390. self.listWidget = QListWidget()
  391.  
  392.  
  393. self.file = open(account + "_subjects" + ".txt", "r")
  394.  
  395. self.filelen = 0
  396. for line in self.file:
  397. self.line = line.strip("\n")
  398. self.listWidget.addItem(self.line)
  399. self.filelen = self.filelen + 1
  400. self.file.close()
  401.  
  402. self.layout.addWidget(self.listWidget, 0, 0, 1, 2)
  403.  
  404. self.addsb = QPushButton('Add', self)
  405. self.layout.addWidget(self.addsb, 1, 0, 1, 1)
  406. self.addsb.clicked[bool].connect(self.addbutton)
  407.  
  408. self.removesb = QPushButton('Remove', self)
  409. self.layout.addWidget(self.removesb, 1, 1, 1, 1)
  410. self.removesb.clicked[bool].connect(self.removebutton)
  411.  
  412. self.doneb = QPushButton('Done', self)
  413. self.layout.addWidget(self.doneb, 2, 1, 1, 1)
  414. self.doneb.clicked[bool].connect(self.donebutton)
  415.  
  416. self.setLayout(self.layout)
  417.  
  418.  
  419. self.center()
  420.  
  421. def update(self):
  422.  
  423. self.layout.removeWidget(self.listWidget)
  424.  
  425. self.listWidget.clear()
  426.  
  427. self.file = open(account + "_subjects" + ".txt", "r")
  428.  
  429. self.filelen = 0
  430. for line in self.file:
  431. self.line = line.strip("\n")
  432. self.listWidget.addItem(self.line)
  433. self.filelen = self.filelen + 1
  434. self.file.close()
  435.  
  436. self.layout.addWidget(self.listWidget, 0, 0, 1, 2)
  437. print("updated")
  438.  
  439. def center(self):
  440.  
  441. qr = self.frameGeometry()
  442. cp = QDesktopWidget().availableGeometry().center()
  443. qr.moveCenter(cp)
  444. self.move(qr.topLeft())
  445.  
  446. def closeEvent(self, event):
  447.  
  448. print("Login window closed.")
  449.  
  450. def addbutton(self):
  451.  
  452. #self.setModal(0)
  453. self.addsubjectwindow = AddSubjectWindow()
  454. self.addsubjectwindow.show()
  455. print("Registration window displayed.")
  456.  
  457. def removebutton(self):
  458.  
  459. if self.listWidget.currentItem() != None:
  460. self.subject = self.listWidget.currentItem().text()
  461.  
  462. reply = QMessageBox.question(self, 'Message',
  463. "All assignments for '" + self.subject + "' will be deleted.", QMessageBox.Yes |
  464. QMessageBox.No, QMessageBox.No)
  465.  
  466. if reply == QMessageBox.Yes:
  467. #deletes subject from account_subjects.txt
  468. self.done = False
  469.  
  470. self.file = open(account + "_subjects" + ".txt", "r")
  471. self.lines = self.file.readlines()
  472. self.file.close()
  473.  
  474. self.file = open(account + "_subjects" + ".txt", "w")
  475. for line in self.lines:
  476. if line==self.subject+"\n":
  477. self.done = True
  478. else:
  479. self.file.write(line)
  480. self.file.close()
  481. if self.done == False:
  482. print("something went wrong.")
  483. subjectwindow.update()
  484.  
  485. #deletes assignments with now deleted subjects
  486.  
  487. self.file = open(account + "_schedule" + ".txt", "r")
  488. self.lines = self.file.readlines()
  489. self.file.close()
  490.  
  491. self.file = open(account + "_schedule" + ".txt", "w")
  492. for line in self.lines:
  493. self.line = line.split(",")
  494. if self.line[1] != self.subject:
  495. self.file.write(line)
  496. self.file.close()
  497.  
  498. formwidget.update()
  499.  
  500.  
  501.  
  502.  
  503. print("dabbed")
  504. else:
  505. print("dabbed")
  506. else:
  507. print("nothing to delete")
  508.  
  509. def donebutton(self):
  510.  
  511. self.hide()
  512. print("Registration window displayed.")
  513.  
  514. class AddSubjectWindow(QDialog):
  515.  
  516. def __init__(self):
  517.  
  518. super(AddSubjectWindow, self).__init__()
  519.  
  520. self.title = 'Add Subject'
  521. self.left = 10
  522. self.top = 10
  523. self.width = 200
  524. self.height = 100
  525. self.setWindowFlags(Qt.WindowStaysOnTopHint)
  526. self.setModal(1)
  527.  
  528. #self.loginwindow = LoginWindow()
  529.  
  530. self.initUI()
  531.  
  532. def initUI(self):
  533.  
  534. self.setWindowTitle(self.title)
  535. self.setGeometry(self.left, self.top, self.width, self.height)
  536.  
  537. self.subjectl = QLabel('Subject', self)
  538. self.subjectl.move(20, 20)
  539. self.subjectl.resize(50, 20)
  540.  
  541. self.subjectf = QLineEdit(self)
  542. self.subjectf.move(80, 20)
  543. self.subjectf.resize(100,20)
  544.  
  545. self.addsb = QPushButton('Add', self)
  546. self.addsb.move(75, 50)
  547. self.addsb.resize(50, 25)
  548. self.addsb.clicked[bool].connect(self.addbutton)
  549.  
  550. self.cancelsb = QPushButton('Cancel', self)
  551. self.cancelsb.move(130, 50)
  552. self.cancelsb.resize(50, 25)
  553. self.cancelsb.clicked[bool].connect(self.cancelbutton)
  554.  
  555. self.center()
  556.  
  557. print("Registration window initialized.")
  558.  
  559. def center(self):
  560.  
  561. qr = self.frameGeometry()
  562. cp = QDesktopWidget().availableGeometry().center()
  563. qr.moveCenter(cp)
  564. self.move(qr.topLeft())
  565.  
  566. def closeEvent(self, event):
  567.  
  568. print("Registration window closed.")
  569.  
  570. def cancelbutton(self):
  571.  
  572. self.hide()
  573. print("loginbutton")
  574.  
  575. def addbutton(self):
  576.  
  577. if self.subjectf.text() != '':
  578. self.file = open(account + "_subjects" + ".txt", "a")
  579. self.file.write(self.subjectf.text() + "\n")
  580. self.file.close()
  581. subjectwindow.update()
  582.  
  583. self.hide()
  584.  
  585. else:
  586. print("fail")
  587.  
  588. class AddAssignmentWindow(QDialog):
  589.  
  590. def __init__(self):
  591.  
  592. super().__init__()
  593.  
  594. self.title = 'Add Assignment'
  595. self.left = 10
  596. self.top = 10
  597. self.width = 220
  598. self.height = 150
  599. self.setWindowFlags(Qt.WindowStaysOnTopHint)
  600. self.setModal(1)
  601.  
  602. self.initUI()
  603.  
  604. def initUI(self):
  605.  
  606. self.setWindowTitle(self.title)
  607. self.setGeometry(self.left, self.top, self.width, self.height)
  608.  
  609. self.assignmentl = QLabel('Assignment', self)
  610. self.assignmentl.move(20, 20)
  611. self.assignmentl.resize(70, 20)
  612.  
  613. self.assignmentf = QLineEdit(self)
  614. self.assignmentf.move(100, 20)
  615. self.assignmentf.resize(100,20)
  616.  
  617. self.subjectl = QLabel('Subject', self)
  618. self.subjectl.move(20, 50)
  619. self.subjectl.resize(50, 20)
  620.  
  621. self.subjectBox = QComboBox(self)
  622. self.file = open(account + "_subjects" + ".txt", "r")
  623. self.filelen = 0
  624. for line in self.file:
  625. self.line = line.strip("\n")
  626. self.subjectBox.addItem(self.line)
  627. self.filelen = self.filelen + 1
  628. self.file.close()
  629. self.subjectBox.move(100, 50)
  630. self.subjectBox.resize(100, 20)
  631.  
  632. self.datel = QLabel('Assignment', self)
  633. self.datel.move(20, 80)
  634. self.datel.resize(70, 20)
  635.  
  636. self.datef = QDateEdit(self)
  637. self.datef.setDate(QDate.currentDate())
  638. self.datef.move(100, 80)
  639. self.datef.resize(100,20)
  640.  
  641. self.addb = QPushButton('Add Assignment', self)
  642. self.addb.move(100,110)
  643. self.addb.resize(100,25)
  644. self.addb.clicked[bool].connect(self.addbutton)
  645.  
  646. self.cancelb = QPushButton('Cancel', self)
  647. self.cancelb.move(40,110)
  648. self.cancelb.resize(50,25)
  649. self.cancelb.clicked[bool].connect(self.cancelbutton)
  650.  
  651. self.errortextl = QLabel('', self)
  652. self.errortextl.setAlignment(Qt.AlignCenter)
  653. self.errortextl.move(10, 135)
  654. self.errortextl.resize(180, 20)
  655.  
  656. self.center()
  657. self.show()
  658.  
  659. print("Login window initialized.")
  660.  
  661. def center(self):
  662.  
  663. qr = self.frameGeometry()
  664. cp = QDesktopWidget().availableGeometry().center()
  665. qr.moveCenter(cp)
  666. self.move(qr.topLeft())
  667.  
  668. def closeEvent(self, event):
  669.  
  670. print("Login window closed.")
  671.  
  672. def addbutton(self):
  673.  
  674. if (self.assignmentf.text() == '') or (self.subjectBox.currentText() == '') or (self.datef.text() == ''):
  675. print("something is empty")
  676. else:
  677. print("dab")
  678. print(self.assignmentf.text())
  679. print(self.subjectBox.currentText())
  680. print(self.datef.date())
  681.  
  682. self.date = self.datef.date().toString('yyyy-MM-dd')
  683.  
  684. self.file = open(account + "_schedule" + ".txt", "a")
  685. self.file.write(self.assignmentf.text() + "," + self.subjectBox.currentText() + "," + self.date + "\n")
  686. self.file.close()
  687.  
  688. formwidget.update()
  689. self.hide()
  690.  
  691. def cancelbutton(self):
  692.  
  693. self.hide()
  694. print("loginbutton")
  695.  
  696. class EditAssignmentWindow(QDialog):
  697.  
  698. def __init__(self):
  699.  
  700. super().__init__()
  701.  
  702. self.title = 'Edit Assignment'
  703. self.left = 10
  704. self.top = 10
  705. self.width = 220
  706. self.height = 150
  707. self.setWindowFlags(Qt.WindowStaysOnTopHint)
  708. self.setModal(1)
  709.  
  710. self.initUI()
  711.  
  712. def initUI(self):
  713.  
  714. self.setWindowTitle(self.title)
  715. self.setGeometry(self.left, self.top, self.width, self.height)
  716.  
  717. self.assignmentl = QLabel('Assignment', self)
  718. self.assignmentl.move(20, 20)
  719. self.assignmentl.resize(70, 20)
  720.  
  721. self.assignmentf = QLineEdit(self)
  722. self.assignmentf.move(100, 20)
  723. self.assignmentf.resize(100,20)
  724.  
  725. self.subjectl = QLabel('Subject', self)
  726. self.subjectl.move(20, 50)
  727. self.subjectl.resize(50, 20)
  728.  
  729. self.subjectBox = QComboBox(self)
  730. self.file = open(account + "_subjects" + ".txt", "r")
  731. self.filelen = 0
  732. for line in self.file:
  733. self.line = line.strip("\n")
  734. self.subjectBox.addItem(self.line)
  735. self.filelen = self.filelen + 1
  736. self.file.close()
  737. self.subjectBox.move(100, 50)
  738. self.subjectBox.resize(100, 20)
  739.  
  740. self.datel = QLabel('Assignment', self)
  741. self.datel.move(20, 80)
  742. self.datel.resize(70, 20)
  743.  
  744. self.datef = QDateEdit(self)
  745. self.datef.setDate(QDate.currentDate())
  746. self.datef.move(100, 80)
  747. self.datef.resize(100,20)
  748.  
  749. self.updateb = QPushButton('Update Assignment', self)
  750. self.updateb.move(100,110)
  751. self.updateb.resize(100,25)
  752. self.updateb.clicked[bool].connect(self.updatebutton)
  753.  
  754. self.cancelb = QPushButton('Cancel', self)
  755. self.cancelb.move(40,110)
  756. self.cancelb.resize(50,25)
  757. self.cancelb.clicked[bool].connect(self.cancelbutton)
  758.  
  759. self.errortextl = QLabel('', self)
  760. self.errortextl.setAlignment(Qt.AlignCenter)
  761. self.errortextl.move(10, 135)
  762. self.errortextl.resize(180, 20)
  763.  
  764. self.center()
  765. self.show()
  766.  
  767. print("Login window initialized.")
  768.  
  769. def update(self, assignment, subject, date, pos):
  770.  
  771. self.location = pos
  772.  
  773. print(self.assignmentf.text())
  774. self.assignmentf.setText(assignment)
  775.  
  776. self.file = open(account + "_subjects" + ".txt", "r")
  777. self.index = 0
  778. for line in self.file:
  779. self.line = line.strip("\n")
  780. if self.line == subject:
  781. self.pos = self.index
  782. self.index = self.index + 1
  783. self.file.close()
  784. self.subjectBox.setCurrentIndex(self.pos)
  785. self.datef.setDate(date)
  786.  
  787.  
  788. def center(self):
  789.  
  790. qr = self.frameGeometry()
  791. cp = QDesktopWidget().availableGeometry().center()
  792. qr.moveCenter(cp)
  793. self.move(qr.topLeft())
  794.  
  795. def closeEvent(self, event):
  796.  
  797. print("Login window closed.")
  798.  
  799. def updatebutton(self):
  800.  
  801.  
  802. print(self.location)
  803. self.done = False
  804.  
  805. self.file = open(account + "_schedule" + ".txt", "r")
  806. self.lines = self.file.readlines()
  807. self.file.close()
  808.  
  809. self.file = open(account + "_schedule" + ".txt", "w")
  810. self.index = 0
  811. for line in self.lines:
  812. if self.index == self.location:
  813. self.date = self.datef.date().toString('yyyy-MM-dd')
  814. self.file.write(self.assignmentf.text() + "," + self.subjectBox.currentText() + "," + self.date + "\n")
  815. else:
  816. self.file.write(line)
  817. self.index = self.index + 1
  818. self.file.close()
  819. if self.done == False:
  820. print("something went wrong.")
  821.  
  822. formwidget.update()
  823. self.hide()
  824.  
  825. def cancelbutton(self):
  826.  
  827. self.hide()
  828. print("loginbutton")
  829.  
  830. class LoginWindow(QDialog):
  831.  
  832. def __init__(self):
  833.  
  834. super().__init__()
  835.  
  836. self.title = 'LoginWindow'
  837. self.left = 10
  838. self.top = 10
  839. self.width = 200
  840. self.height = 130
  841. self.setWindowFlags(Qt.WindowStaysOnTopHint)
  842. self.setModal(1)
  843.  
  844. self.registrationwindow = RegistrationWindow()
  845.  
  846. self.initUI()
  847.  
  848. def initUI(self):
  849.  
  850. self.setWindowTitle(self.title)
  851. self.setGeometry(self.left, self.top, self.width, self.height)
  852.  
  853. self.usernamel = QLabel('Username', self)
  854. self.usernamel.move(20, 20)
  855. self.usernamel.resize(50, 20)
  856.  
  857. self.usernamef = QLineEdit(self)
  858. self.usernamef.move(75, 20)
  859. self.usernamef.resize(100,20)
  860.  
  861. self.passwordl = QLabel('Password', self)
  862. self.passwordl.move(20, 50)
  863. self.passwordl.resize(50, 20)
  864.  
  865. self.passwordf = QLineEdit(self)
  866. self.passwordf.setEchoMode(QLineEdit.Password)
  867. self.passwordf.move(75, 50)
  868. self.passwordf.resize(100,20)
  869.  
  870. self.loginb = QPushButton('Login', self)
  871. self.loginb.move(125,80)
  872. self.loginb.resize(50,25)
  873. self.loginb.clicked[bool].connect(self.loginbutton)
  874.  
  875. self.createb = QPushButton('Create an Account', self)
  876. self.createb.move(20,80)
  877. self.createb.resize(100,25)
  878. self.createb.clicked[bool].connect(self.registrationbutton)
  879.  
  880. self.errortextl = QLabel('', self)
  881. self.errortextl.setAlignment(Qt.AlignCenter)
  882. self.errortextl.move(10, 105)
  883. self.errortextl.resize(180, 20)
  884.  
  885. self.center()
  886. self.show()
  887.  
  888. print("Login window initialized.")
  889.  
  890. def center(self):
  891.  
  892. qr = self.frameGeometry()
  893. cp = QDesktopWidget().availableGeometry().center()
  894. qr.moveCenter(cp)
  895. self.move(qr.topLeft())
  896.  
  897. def closeEvent(self, event):
  898.  
  899. print("Login window closed.")
  900.  
  901. def loginbutton(self):
  902.  
  903. if (self.usernamef.text() == '') or (self.passwordf.text() == ''):
  904. self.errortextl.setText('Not all fields are filled out.')
  905. else:
  906. information = Information()
  907. if information.login(self.usernamef.text(), self.passwordf.text()) == True:
  908. print("logged in")
  909. self.hide()
  910. global mainwindow
  911. mainwindow = MainWindow()
  912. mainwindow.show()
  913. else:
  914. self.errortextl.setText("Username and/or password is is incorrect.")
  915.  
  916. def registrationbutton(self):
  917.  
  918. self.hide()
  919. self.registrationwindow.show()
  920. print("Registration window displayed.")
  921.  
  922. class RegistrationWindow(QDialog):
  923.  
  924. def __init__(self):
  925.  
  926. super(RegistrationWindow, self).__init__()
  927.  
  928. self.title = 'RegistrationWindow'
  929. self.left = 10
  930. self.top = 10
  931. self.width = 250
  932. self.height = 165
  933. self.setWindowFlags(Qt.WindowStaysOnTopHint)
  934. self.setModal(1)
  935.  
  936. #self.loginwindow = LoginWindow()
  937.  
  938. self.initUI()
  939.  
  940. def initUI(self):
  941.  
  942. self.setWindowTitle(self.title)
  943. self.setGeometry(self.left, self.top, self.width, self.height)
  944.  
  945. self.usernamel = QLabel('Username', self)
  946. self.usernamel.move(60, 20)
  947. self.usernamel.resize(50, 20)
  948.  
  949. self.usernamef = QLineEdit(self)
  950. self.usernamef.move(115, 20)
  951. self.usernamef.resize(100,20)
  952.  
  953. self.passwordl = QLabel('Password', self)
  954. self.passwordl.move(60, 50)
  955. self.passwordl.resize(50, 20)
  956.  
  957. self.passwordf = QLineEdit(self)
  958. self.passwordf.setEchoMode(QLineEdit.Password)
  959. self.passwordf.move(115, 50)
  960. self.passwordf.resize(100,20)
  961.  
  962. self.cpasswordl = QLabel('Confirm Password', self)
  963. self.cpasswordl.move(20, 80)
  964. self.cpasswordl.resize(100, 20)
  965.  
  966. self.cpasswordf = QLineEdit(self)
  967. self.cpasswordf.setEchoMode(QLineEdit.Password)
  968. self.cpasswordf.move(115, 80)
  969. self.cpasswordf.resize(100,20)
  970.  
  971. self.registerb = QPushButton('Register', self)
  972. self.registerb.move(140,110)
  973. self.registerb.resize(75,25)
  974. self.registerb.clicked[bool].connect(self.registerbutton)
  975.  
  976. self.loginb = QPushButton('Login', self)
  977. self.loginb.move(50,110)
  978. self.loginb.resize(75,25)
  979. self.loginb.clicked[bool].connect(self.loginbutton)
  980.  
  981. self.errortextl = QLabel('', self)
  982. self.errortextl.setAlignment(Qt.AlignCenter)
  983. self.errortextl.move(25, 140)
  984. self.errortextl.resize(200, 20)
  985.  
  986. self.center()
  987.  
  988. print("Registration window initialized.")
  989.  
  990. def center(self):
  991.  
  992. qr = self.frameGeometry()
  993. cp = QDesktopWidget().availableGeometry().center()
  994. qr.moveCenter(cp)
  995. self.move(qr.topLeft())
  996.  
  997. def closeEvent(self, event):
  998.  
  999. print("Registration window closed.")
  1000.  
  1001. def loginbutton(self):
  1002.  
  1003. self.loginwindow = LoginWindow()
  1004. self.loginwindow.show()
  1005. self.hide()
  1006. print("loginbutton")
  1007. #print("Registration window displayed.")
  1008.  
  1009. def registerbutton(self):
  1010.  
  1011. print("registerbutton")
  1012.  
  1013. if (self.usernamef.text() == '') or (self.passwordf.text() == '') or (self.cpasswordf.text() == ''):
  1014. self.errortextl.setText('Not all fields are filled out.')
  1015. elif self.passwordf.text() != self.cpasswordf.text():
  1016. self.errortextl.setText('Passwords are not the same.')
  1017. else:
  1018. print("Creating account with username: " + self.usernamef.text() + " + and password: " + self.passwordf.text())
  1019.  
  1020. self.file = open("accounts.txt", "a")
  1021. self.file.write(self.usernamef.text() + "\n" + self.passwordf.text() + "\n")
  1022. self.file.close()
  1023.  
  1024. self.file = open(self.usernamef.text() + "_subjects" + ".txt", "w")
  1025. self.file = open(self.usernamef.text() + "_schedule" + ".txt", "w")
  1026.  
  1027. self.hide()
  1028.  
  1029. global loginwindow
  1030. loginwindow = LoginWindow()
  1031. loginwindow.show()
  1032.  
  1033. if __name__ == '__main__':
  1034. app = QApplication(sys.argv)
  1035. loginwindow = LoginWindow()
  1036. sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement