Advertisement
Guest User

Untitled

a guest
May 10th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.32 KB | None | 0 0
  1. import sys
  2. import math
  3. from PyQt5.QtMultimedia import QSound
  4. from PyQt5.QtGui import (QIcon, QPixmap)
  5. from PyQt5.QtCore import (QTime, QTimer)
  6. from PyQt5.QtWidgets import (QMenu, QLineEdit, QMessageBox, QLCDNumber, QLabel,
  7. QPushButton, QApplication, QMainWindow, QAction, QWidget,QTextEdit,QCheckBox)
  8. import time
  9. import sqlite3
  10. import random
  11. def db():
  12. conn = sqlite3.connect('tutorial.db')
  13. c = conn.cursor()
  14.  
  15. c.execute('create table if not exists users(name TEXT NOT NULL,password TEXT NOT NULL, grade TEXT )')
  16. c.execute('select * from users')
  17. data=c.fetchall()
  18. conn.commit()
  19. c.close()
  20. conn.close()
  21. class Example(QMainWindow):
  22.  
  23. def __init__(self):
  24. super().__init__()
  25.  
  26. self.initUI()
  27.  
  28.  
  29. def initUI(self):
  30. self.loggedin=False
  31. self.imieg=''
  32. self.haslog=''
  33. self.tlo = 0
  34. self.koncwynik=0
  35. self.zrobione=False
  36. self.ispassed=False
  37. self.cwiczenie=False
  38. self.btns = []
  39.  
  40. self.timer = QTimer(self)
  41. self.timer.timeout.connect(self.zmianatla)
  42. self.timer.start(1000)
  43.  
  44. self.zalogowanyg=QLineEdit(self)
  45. self.zalogowanyg.resize(150,30)
  46. self.zalogowanyg.setText("Nikt nie jest zalogowany")
  47. self.zalogowanyg.setReadOnly(True)
  48.  
  49. self.btn1 = QPushButton("Zaloguj", self)
  50. self.btn1.move(160, 25)
  51. self.btn1.resize(80, 30)
  52. self.btn1.clicked.connect(self.loginbutton)
  53. self.btns.append(self.btn1)
  54.  
  55. self.btn2 = QPushButton("Wyniki", self)
  56. self.btn2.move(160, 75)
  57. self.btn2.resize(80, 30)
  58. self.btns.append(self.btn2)
  59. self.btn2.clicked.connect(self.wyniki)
  60.  
  61. self.btn3 = QPushButton("Wyjscie", self)
  62. self.btn3.move(160, 125)
  63. self.btn3.resize(80, 30)
  64. self.btns.append(self.btn3)
  65. self.btn3.clicked.connect(self.zamykanie)
  66.  
  67. self.btn4=QPushButton('Sprawdzian',self)
  68. self.btn4.move(40,50)
  69. self.btn4.resize(80,30)
  70. self.btn4.clicked.connect(self.starttest)
  71. self.btns.append(self.btn4)
  72.  
  73. self.btn5=QPushButton('Cwicz 1',self)
  74. self.btn5.move(40,90)
  75. self.btn5.resize(80,30)
  76. self.btn5.clicked.connect(self.starttest1)
  77. self.btns.append(self.btn5)
  78.  
  79. self.btn6=QPushButton('Cwicz 2',self)
  80. self.btn6.move(40,130)
  81. self.btn6.resize(80,30)
  82. self.btn6.clicked.connect(self.starttest2)
  83. self.btns.append(self.btn6)
  84.  
  85. self.chckbox=QCheckBox('Migajace Tlo',self)
  86. self.chckbox.move(300,160)
  87.  
  88. self.setGeometry(300, 300, 400, 200)
  89. self.move(0, 150)
  90. self.setWindowTitle('Tescik')
  91. self.setStyleSheet("background-color: lightgreen")
  92. self.show()
  93.  
  94. def starttest(self):
  95. if self.imieg!='':
  96. QMessageBox.about(self, "Zasady ", """Witaj w pierwszym tescie!
  97. Twoje zadanie polega na jak najszybszym wcisnieciu zielonego przycisku.
  98. Wcisniecie czerwonego przycisku spowoduje utrate punktu""")
  99. self.cwiczenie=False
  100. self.pierwsz=test()
  101. self.pierwsz.show()
  102. else:
  103. QMessageBox.about(self, "Error", "Nikt nie jest zalogowany")
  104.  
  105. def starttest1(self):
  106. if True:
  107. QMessageBox.about(self, "Zasady ", """Witaj w pierwszym tescie!
  108. Twoje zadanie polega na jak najszybszym wcisnieciu zielonego przycisku.
  109. Wcisniecie czerwonego przycisku spowoduje utrate punktu""")
  110. self.cwiczenie=True
  111. self.pierwsz=test()
  112. self.pierwsz.show()
  113. else:
  114. QMessageBox.about(self, "Error", "Nikt nie jest zalogowany")
  115.  
  116. def starttest2(self):
  117. if True:
  118. QMessageBox.about(self, "Zasady ", """Witaj w drugim tescie!
  119. Twoje zadanie polega na jak najszybszym wcisnieciu przycisku ktory pojawi sie w losowym miejscu""")
  120. self.cwiczenie=True
  121. self.drug=test2()
  122. self.drug.show()
  123. else:
  124. QMessageBox.about(self, "Error", "Nikt nie jest zalogowany")
  125. def zamykanie(self):
  126. wyjscie = QMessageBox.question(self, 'Zamykanie', "Czy na pewno chcesz wyjsc?",
  127. QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
  128. print(self.imieg)
  129. if wyjscie == QMessageBox.Yes:
  130. sys.exit(app.exec_())
  131.  
  132. def zmianatla(self):
  133. if self.tlo % 3 == 0 and self.chckbox.isChecked():
  134. self.setStyleSheet("background-color: green")
  135. for btn in self.btns:
  136. btn.setStyleSheet("background-color: none")
  137. self.tlo += 1
  138. print(self.koncwynik)
  139.  
  140.  
  141. elif self.tlo % 3 == 1:
  142. self.setStyleSheet("background-color: red")
  143. for btn in self.btns:
  144. btn.setStyleSheet("background-color: none")
  145. self.tlo += 1
  146.  
  147. elif self.tlo % 3 == 2:
  148. self.setStyleSheet("background-color: yellow")
  149. for btn in self.btns:
  150. btn.setStyleSheet("background-color: none")
  151. self.tlo += 1
  152.  
  153. def loginbutton(self):
  154. if self.btn1.text()=='Wyloguj':
  155. self.wyloguj()
  156. elif self.btn1.text()=='Zaloguj':
  157. self.login()
  158.  
  159.  
  160.  
  161. def login(self):
  162. self.log=login()
  163. self.log.show()
  164.  
  165.  
  166. def wyloguj(self):
  167. self.btn1.setText("Zaloguj")
  168. self.zalogowanyg.setText('Nikt nie jest zalogowany')
  169. self.btn1.clicked.connect(self.login)
  170. self.loggedin=False
  171. self.imieg=''
  172.  
  173. def wyniki(self):
  174. self.score=wynikowe()
  175. self.score.show()
  176.  
  177. def zmienwynik(self):
  178. with sqlite3.connect('tutorial.db') as db:
  179. c = db.cursor()
  180. c.execute(("INSERT INTO users VALUES(?,?,?)"),self.imieg,self.haslog (str(self.koncwynik)))
  181. c.execute(('DELETE from users WHERE name=? and grade=?'), (self.imieg, ''))
  182. db.commit()
  183. c.close()
  184. db.close()
  185. class wynikowe(QWidget):
  186. def __init__(self):
  187. super().__init__()
  188. self.initUI4()
  189.  
  190. def initUI4(self):
  191. self.wyniki = QTextEdit(self)
  192. self.wyniki.setGeometry(300, 300, 250, 140)
  193. self.wyniki.move(0, 30)
  194. self.setGeometry(300, 300, 300, 250)
  195. self.move(0, 150)
  196. self.setWindowTitle("Login")
  197. self.wyswietl()
  198.  
  199. def wyswietl(self):
  200. wynik=''
  201. with sqlite3.connect('tutorial.db') as db:
  202. c = db.cursor()
  203. c.execute("SELECT * from users")
  204. data = c.fetchall()
  205. db.commit()
  206. for row in data:
  207. wynik=wynik+'Gracz: '+row[0]+' '+'Czas: '+row[2]+'\n'
  208. self.wyniki.setText(wynik)
  209. print(wynik)
  210. c.close()
  211. db.close()
  212. class login(QWidget):
  213. def __init__(self):
  214. super().__init__()
  215. self.initUI2()
  216.  
  217. def initUI2(self):
  218.  
  219.  
  220. self.imie = QLineEdit(self)
  221. self.imie.setGeometry(100, 100, 100, 40)
  222. self.imie.setPlaceholderText("Tu wpisz imie")
  223. self.imie.move(150, 30)
  224.  
  225. self.haslo = QLineEdit(self)
  226. self.haslo.setGeometry(100, 100, 100, 40)
  227.  
  228. self.haslo.setPlaceholderText("Tu wpisz haslo")
  229. self.haslo.setEchoMode(QLineEdit.Password)
  230. self.haslo.returnPressed.connect(self.zaloguj)
  231. self.haslo.move(150, 80)
  232.  
  233. self.clsbutton = QPushButton("Wyjscie",self)
  234. self.clsbutton.resize(80, 30)
  235. self.clsbutton.move(20, 100)
  236. self.clsbutton.clicked.connect(self.close)
  237.  
  238. self.okbutton = QPushButton("Ok", self)
  239. self.okbutton.resize(80, 30)
  240. self.okbutton.move(20, 60)
  241. self.okbutton.clicked.connect(self.zaloguj)
  242.  
  243. self.cracc=QPushButton("Utworz Konto",self)
  244. self.cracc.resize(80, 30)
  245. self.cracc.move(20, 20)
  246. self.cracc.clicked.connect(self.createacc)
  247.  
  248.  
  249. self.setGeometry(300, 300, 300, 150)
  250. self.move(0, 150)
  251. self.setWindowTitle("Login")
  252. # self.show()
  253.  
  254. def createacc(self):
  255. self.account=create()
  256. self.account.show()
  257.  
  258. def zaloguj(self):
  259.  
  260. with sqlite3.connect('tutorial.db') as db:
  261. c = db.cursor()
  262.  
  263. username = str(self.imie.text())
  264. password = str(self.haslo.text())
  265.  
  266.  
  267. c.execute('SELECT * FROM users WHERE name = ? and password = ?', (username, password))
  268. data = c.fetchone()
  269. db.commit()
  270. print(data)
  271. if data != None:
  272. print('wszedles')
  273. ex.imieg=username
  274. ex.haslog=password
  275. ex.zalogowanyg.setText('Zalogowany gracz: '+username)
  276. print(ex.imieg)
  277. ex.loggedin=True
  278. print(ex.loggedin)
  279. ex.btn1.setText("Wyloguj")
  280. self.close()
  281. else:
  282. print('nie wszedles')
  283. class create(QWidget):
  284. def __init__(self):
  285. super().__init__()
  286. self.initUI3()
  287.  
  288. def initUI3(self):
  289. self.imie = QLineEdit(self)
  290. self.imie.setGeometry(100, 100, 100, 40)
  291. self.imie.setPlaceholderText("Tu wpisz imie")
  292. self.imie.move(150, 30)
  293.  
  294. self.haslo = QLineEdit(self)
  295. self.haslo.setGeometry(100, 100, 100, 40)
  296. self.haslo.setPlaceholderText("Tu wpisz haslo")
  297. self.haslo.setEchoMode(QLineEdit.Password)
  298. self.haslo.move(150, 80)
  299.  
  300. self.clsbutton = QPushButton("Wyjscie",self)
  301. self.clsbutton.resize(80, 30)
  302. self.clsbutton.move(20, 20)
  303. self.clsbutton.clicked.connect(self.close)
  304.  
  305. self.okbutton = QPushButton("Ok", self)
  306. self.okbutton.resize(80, 30)
  307. self.okbutton.move(20, 60)
  308. self.haslo.returnPressed.connect(self.dodaj)
  309. self.okbutton.clicked.connect(self.dodaj)
  310.  
  311. self.setGeometry(300, 300, 300, 150)
  312. self.move(0, 150)
  313. self.setWindowTitle("Stworz konto")
  314. # self.show()
  315.  
  316.  
  317. def dodaj(self):
  318. with sqlite3.connect('tutorial.db') as db:
  319. c = db.cursor()
  320.  
  321. username = str(self.imie.text())
  322. password = str(self.haslo.text())
  323. c.execute("INSERT INTO users VALUES(?,?,?,?)", (username, password, '', ''))
  324. c.execute("SELECT * from users")
  325. data=c.fetchall()
  326. db.commit()
  327. print(data)
  328. self.close()
  329. class test(QWidget):
  330. def __init__(self):
  331. super().__init__()
  332.  
  333. self.initUI5()
  334.  
  335. def initUI5(self):
  336. self.pressed=True
  337. self.score=0
  338. self.highs=0
  339. self.highs1=0
  340. self.ended=False
  341. self.btns=[]
  342.  
  343. self.label = QLabel("Aktualny Wynik",self)
  344. self.label.move(20,90)
  345. self.label.show()
  346. if ex.cwiczenie==True:
  347. self.label.hide()
  348.  
  349. self.curscr=QLineEdit(self)
  350. self.curscr.resize(120,30)
  351. self.curscr.move(20,110)
  352. self.curscr.setText('Wynik: Czas: s')
  353. self.curscr.setReadOnly(True)
  354. if ex.cwiczenie==True:
  355. self.curscr.hide()
  356.  
  357. self.buton1=QPushButton("Zacznij",self)
  358. self.buton1.move(60, 25)
  359. self.buton1.clicked.connect(self.rozgrzewka)
  360. self.buton1.resize(90, 30)
  361.  
  362. self.btns.append(self.buton1)
  363.  
  364.  
  365. self.btn2=QPushButton('Rozpocznij test',self)
  366. self.btn2.move(160, 25)
  367. self.btn2.resize(90, 30)
  368. self.btn2.clicked.connect(self.rozgrzewka)
  369. self.btn2.hide()
  370. self.btns.append(self.btn2)
  371.  
  372. self.btn3=QPushButton('Stop Test',self)
  373. self.btn3.move(200,110)
  374. self.btn3.resize(90,30)
  375. self.btn3.clicked.connect(self.close)
  376. self.btn3.hide()
  377.  
  378. self.setGeometry(300, 300, 300, 150)
  379. self.move(0, 150)
  380. self.setWindowTitle("Test1")
  381. self.show()
  382.  
  383.  
  384. def rozgrzewka(self):
  385. x=0
  386. self.buton1.setText('')
  387. self.btn2.setText('')
  388. self.btn2.show()
  389. self.buton1.setStyleSheet("background-color: none")
  390. self.timer = QTimer(self)
  391. self.timer.timeout.connect(self.losowanie)
  392. self.timer.start(1000)
  393. def losowanie(self):
  394. if ex.cwiczenie==True:
  395. self.score=0
  396. self.btn3.show()
  397. if self.pressed==True and self.score<2 :
  398. for i in range(100):
  399. y=random.randrange(1,3)
  400. x=random.randrange(1,6)
  401. time.sleep(0.5)
  402. print(x,y,self.buton1.text())
  403. if x==5:
  404. if y==1:
  405. self.buton1.setText('Zielony')
  406. self.buton1.setStyleSheet('background-color: green')
  407. self.buton1.clicked.disconnect()
  408. self.buton1.clicked.connect(self.punkt)
  409.  
  410. self.btn2.setText('Czerwony')
  411. self.btn2.setStyleSheet("background-color: red")
  412. self.btn2.clicked.disconnect()
  413. self.btn2.clicked.connect(self.minusp)
  414. self.czas = time.time()
  415. self.pressed=False
  416. #self.iteracje+=1
  417. break
  418. break
  419. elif y==2:
  420. self.btn2.setText('Zielony')
  421. self.btn2.setStyleSheet('background-color: green')
  422. self.btn2.clicked.disconnect()
  423. self.btn2.clicked.connect(self.punkt)
  424.  
  425. self.buton1.setText('Czerwony')
  426. self.buton1.setStyleSheet("background-color: red")
  427. self.buton1.clicked.disconnect()
  428. self.buton1.clicked.connect(self.minusp)
  429. self.czas = time.time()
  430. self.pressed = False
  431. # self.iteracje+=1
  432. break
  433. break
  434. elif self.score>1 and self.ended!=True :
  435. print(self.highs1)
  436. string='Gratulacje, ukonczyles test pierwszy w %s sekund' %self.highs1
  437. print(string)
  438. QMessageBox.about(self,'Wygrana',string)
  439. self.xd = test2()
  440. self.xd.show()
  441. ex.koncwynik+=self.highs1
  442. self.ended=True
  443.  
  444. self.close()
  445.  
  446.  
  447.  
  448.  
  449. def punkt(self):
  450. self.pressed=True
  451. self.czas1=time.time()
  452. self.czasa=self.czas1-self.czas
  453. self.score+=1
  454. self.highs+=self.czasa
  455. self.highs1=round(self.highs,3)
  456. string = 'Wynik {} Czas {}s'.format(self.score, self.highs1)
  457. self.curscr.setText(string)
  458. print(self.score,self.highs1,self.buton1.text(),self.pressed)
  459. self.buton1.setText('')
  460. self.buton1.clicked.disconnect()
  461. self.buton1.clicked.connect(self.zlykilk)
  462. self.btn2.setText('')
  463. self.btn2.clicked.disconnect()
  464. self.btn2.clicked.connect(self.zlykilk)
  465. self.buton1.setStyleSheet("background-color: none")
  466. self.btn2.setStyleSheet('background-color: none')
  467.  
  468.  
  469. def minusp(self):
  470. self.pressed=True
  471. self.czas2=time.time()
  472. self.czasb=(self.czas2-self.czas)+1
  473. self.score=self.score-1
  474. self.highs+=self.czasb
  475. self.highs1=round(self.highs,3)
  476. self.string='Wynik %s Czaas %s' %self.score,self.highs1
  477. print(string.type())
  478. self.buton1.setText('')
  479. self.buton1.clicked.disconnect()
  480. self.buton1.clicked.connect(self.zlykilk)
  481. self.btn2.setText('')
  482. self.btn2.clicked.disconnect()
  483. self.buton1.setStyleSheet("background-color: none")
  484. self.btn2.setStyleSheet('background-color: none')
  485.  
  486. def zlykilk(self):
  487. QMessageBox.about(self, "Zasady ","Kliknales w zlym momencie")
  488. self.highs1+=1
  489. self.score-=1
  490. class test2(QWidget):
  491. def __init__(self):
  492. super().__init__()
  493. self.initUI6()
  494.  
  495. def initUI6(self):
  496. self.score = 0
  497. self.highs = 0
  498. self.highs1 = 0
  499. self.pressed=True
  500. self.ended=False
  501. self.istest=True
  502.  
  503. self.buton1 = QPushButton("Start", self)
  504. self.buton1.move(60, 25)
  505. self.buton1.clicked.connect(self.refleks1)
  506. self.buton1.resize(90, 30)
  507.  
  508. self.btn3 = QPushButton('Stop',self)
  509. self.btn3.move(200,110)
  510. self.btn3.resize(90,30)
  511. self.btn3.clicked.connect(self.close)
  512. self.btn3.hide()
  513.  
  514.  
  515. self.curscr=QLineEdit(self)
  516. self.curscr.resize(120,30)
  517. self.curscr.move(20,110)
  518. self.curscr.setText('Wynik: Czas: s')
  519. self.curscr.setReadOnly(True)
  520. if ex.cwiczenie==True:
  521. self.curscr.hide()
  522.  
  523. self.setGeometry(300, 300, 300, 150)
  524. self.move(0, 150)
  525. self.setWindowTitle("Test2")
  526. self.show()
  527.  
  528. def refleks1(self):
  529. self.buton1.hide()
  530. self.timer = QTimer(self)
  531. self.timer.timeout.connect(self.refleks)
  532. self.timer.start(1000)
  533.  
  534. def refleks(self):
  535. if ex.cwiczenie==True:
  536. self.score = 0
  537. self.btn3.show()
  538. if self.score<5 and self.pressed==True:
  539. for i in range(100):
  540. e = random.randrange(1, 6)
  541. x = random.randrange(1, 200)
  542. y = random.randrange(1,50)
  543. time.sleep(0.5)
  544. print(e)
  545. if e == 5:
  546. self.buton1.resize(70, 50)
  547. self.buton1.move(x,y)
  548. self.buton1.show()
  549. self.buton1.setText('Kliknij Mnie!')
  550. self.buton1.setStyleSheet('background-color: green')
  551. self.buton1.clicked.disconnect()
  552. self.buton1.clicked.connect(self.punkt)
  553. self.czas = time.time()
  554. self.pressed = False
  555. break
  556. break
  557. elif self.score > 4 and self.ended != True:
  558. print(self.highs1)
  559. string = 'Gratulacje, ukonczyles test drugi w %s sekund' % self.highs1
  560. print(string)
  561. QMessageBox.about(self, 'Wygrana', string)
  562. self.ended = True
  563. ex.koncwynik+=self.highs1
  564. self.zmienwynik()
  565. self.close()
  566.  
  567. def punkt(self):
  568. self.pressed = True
  569. self.czas1 = time.time()
  570. self.czasa = self.czas1 - self.czas
  571. self.score += 1
  572. self.highs += self.czasa
  573. self.highs1 = round(self.highs, 3)
  574. string = 'Wynik {} Czas {}s'.format(self.score, self.highs1)
  575. self.curscr.setText(string)
  576. self.buton1.hide()
  577. def zmienwynik(self):
  578. with sqlite3.connect('tutorial.db') as db:
  579. c = db.cursor()
  580. wynik=str(ex.koncwynik)
  581. c.execute(("INSERT INTO users VALUES(?,?,?)"),(ex.imieg,ex.haslog,wynik))
  582. c.execute(('DELETE from users WHERE name=? and grade=?'), (ex.imieg, ''))
  583. db.commit()
  584. c.close()
  585. db.close()
  586.  
  587. if __name__ == '__main__':
  588. app = QApplication(sys.argv)
  589. db()
  590. print("""Wlansosc Jakub Kramp.
  591. Kopiowanie i uzywanie bez zgody autora zabronione""")
  592. ex = Example()
  593. sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement