From 108143c76dfa5ac5918199a6df7cc90a0f6c1c5b Mon Sep 17 00:00:00 2001 From: Jakub Kaczmarek Date: Mon, 1 Feb 2021 23:03:06 +0100 Subject: [PATCH] =?UTF-8?q?Prze=C5=9Blij=20pliki=20do=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main_v_2.6.py | 589 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 589 insertions(+) create mode 100644 main_v_2.6.py diff --git a/main_v_2.6.py b/main_v_2.6.py new file mode 100644 index 0000000..9d3c259 --- /dev/null +++ b/main_v_2.6.py @@ -0,0 +1,589 @@ +from tkinter import * +import tkinter as tk +import pymysql as mysql +import socket + +root = tk.Tk() +root.geometry('600x300+200+200') + +def admin(): + def edit_baza_pytan(): + edit_baza_pytan_window = tk.Tk() + edit_baza_pytan_window.geometry('600x300+300+300') + + def add_pyt_sql(): + add_pytanie.destroy() + del_pytanie.destroy() + + def add_pyt(): + print("ok") + + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') # łączenie się z bazą danych + cur = con.cursor() # tworzy obiekt, dzięki któremu będzie można wysyłać zapytania do bazy danych + + if(pytanie_entry.get()=='' or p_odp.get()=='' or b_odp_1.get()=='' or b_odp_2.get()=='' or b_odp_3.get()==''): + err = tk.Label(edit_baza_pytan_window, text='Wypełnij puste pola') + err.grid(row=7) + else: + cur.execute( + "INSERT INTO pytania (Pytanie, P_odp, B_odp_1, B_odp_2, B_odp_3) VALUES ('%s','%s','%s','%s','%s')" % ( + pytanie_entry.get(), p_odp.get(), b_odp_1.get(), + b_odp_2.get(), b_odp_3.get())) + + con.commit() + + cur.close() + con.close() + + add_pyt_sql() + + pytanie_entry_label = tk.Label(edit_baza_pytan_window, text='Pytanie') + p_odp_label = tk.Label(edit_baza_pytan_window, text='Poprawna odpowiedz') + b_odp_1_label = tk.Label(edit_baza_pytan_window, text='Bledna odpowiedz') + b_odp_2_label = tk.Label(edit_baza_pytan_window, text='Bledna odpowiedz') + b_odp_3_label = tk.Label(edit_baza_pytan_window, text='Bledna odpowiedz') + + pytanie_entry = tk.Entry(edit_baza_pytan_window, ) + p_odp = tk.Entry(edit_baza_pytan_window, ) + b_odp_1 = tk.Entry(edit_baza_pytan_window, ) + b_odp_2 = tk.Entry(edit_baza_pytan_window, ) + b_odp_3 = tk.Entry(edit_baza_pytan_window, ) + + add_pytanie_button = tk.Button( + edit_baza_pytan_window, + text='Dodaj pytanie', + command=add_pyt) + + pytanie_entry_label.grid(row=0, column=0) + p_odp_label.grid(row=1, column=0) + b_odp_1_label.grid(row=2, column=0) + b_odp_2_label.grid(row=3, column=0) + b_odp_3_label.grid(row=4, column=0) + + pytanie_entry.grid(row=0, column=1) + p_odp.grid(row=1, column=1) + b_odp_1.grid(row=2, column=1) + b_odp_2.grid(row=3, column=1) + b_odp_3.grid(row=4, column=1) + + add_pytanie_button.grid(row=5, column=1) + + def del_pyt_sql(): + add_pytanie.destroy() + del_pytanie.destroy() + + def del_pyt(): + print("ok") + + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') + cur = con.cursor() + + cur.execute( + "DELETE FROM `pytania` WHERE `id_pytania` = %s" % int(id_pyt.get())) + + con.commit() + cur.close() + con.close() + + del_pyt_sql() + + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') + cur = con.cursor() + + cur.execute( + "SELECT * FROM `pytania`") + + wyniki = cur.fetchall() + + cur.close() + con.close() + + listbox = Listbox(edit_baza_pytan_window) + a = 0 + for list in wyniki: + listbox.insert(a, list) + a += 1 + listbox.grid(row=0, column=0) + scrollbar = Scrollbar(edit_baza_pytan_window, orient='vertical', command=listbox.yview) + scrollbar.grid(row=0, column=1, stick='ns') + + simple_label = tk.Label(edit_baza_pytan_window, text='Podaj nr do usuniecia') + simple_label.grid(row=1, column=0) + id_pyt = tk.Entry(edit_baza_pytan_window) + id_pyt.grid(row=2, column=0) + + del_pytanie_button = tk.Button( + edit_baza_pytan_window, + text='Usun', + command=del_pyt) + + del_pytanie_button.grid(row=3, column=0) + + add_pytanie = tk.Button( + edit_baza_pytan_window, + text='Dodaj pytanie do bazy', + command=add_pyt_sql) + add_pytanie.grid(row=0, column=0) + + del_pytanie = tk.Button( + edit_baza_pytan_window, + text='Usuń pytanie z bazy', + command=del_pyt_sql) + del_pytanie.grid(row=1, column=0) + + edit_baza_pytan_window.mainloop() + + def wyniki_window(): + wyniki_window = tk.Tk() + #wyniki_window.geometry('600x300+300+300') + + print("ok") + + def filtr_wynik(): + if(nazwa_quizu_entry.get() != '' and nazwa_ucznia_entry.get() == ''): + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') # łączenie się z bazą danych + cur = con.cursor() # tworzy obiekt, dzięki któremu będzie można wysyłać zapytania do bazy danych + + cur.execute( + 'SELECT * FROM wyniki where quiz_nazwa = \'%s\'' % (nazwa_quizu_entry.get())) + wyniki = cur.fetchall() + + listbox = Listbox(wyniki_window, width=50) + listbox.grid(row=0, columnspan=2) + scrollbar = Scrollbar(wyniki_window, orient='vertical', command=listbox.yview) + scrollbar.grid(row=0, columnspan=2, stick='ens') + a = 0 + for list in wyniki: + listbox.insert(a, list) + a += 1 + listbox.config(yscrollcommand=scrollbar.set) + scrollbar.config(command=listbox.yview) + elif(nazwa_quizu_entry.get() == '' and nazwa_ucznia_entry.get() != ''): + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') # łączenie się z bazą danych + cur = con.cursor() # tworzy obiekt, dzięki któremu będzie można wysyłać zapytania do bazy danych + + cur.execute( + 'SELECT * FROM wyniki where user_nazwa = \'%s\'' % (nazwa_ucznia_entry.get())) + wyniki = cur.fetchall() + + listbox = Listbox(wyniki_window, width=50) + listbox.grid(row=0, columnspan=2) + scrollbar = Scrollbar(wyniki_window, orient='vertical', command=listbox.yview) + scrollbar.grid(row=0, columnspan=2, stick='ens') + a = 0 + for list in wyniki: + listbox.insert(a, list) + a += 1 + listbox.config(yscrollcommand=scrollbar.set) + scrollbar.config(command=listbox.yview) + elif(nazwa_quizu_entry.get() != '' and nazwa_ucznia_entry.get() != ''): + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') + cur = con.cursor() + + cur.execute( + 'SELECT * FROM wyniki where quiz_nazwa = \'%s\' AND user_nazwa = \'%s\'' % (nazwa_quizu_entry.get(),nazwa_ucznia_entry.get())) + wyniki = cur.fetchall() + + listbox = Listbox(wyniki_window, width=50) + listbox.grid(row=0, columnspan=2) + scrollbar = Scrollbar(wyniki_window, orient='vertical', command=listbox.yview) + scrollbar.grid(row=0, columnspan=2, stick='ens') + a = 0 + for list in wyniki: + listbox.insert(a, list) + a += 1 + listbox.config(yscrollcommand=scrollbar.set) + scrollbar.config(command=listbox.yview) + else: + print("pusty filtr") + + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') # łączenie się z bazą danych + cur = con.cursor() # tworzy obiekt, dzięki któremu będzie można wysyłać zapytania do bazy danych + + cur.execute( + "SELECT * FROM `wyniki`") # zapytanie o tabele zawarte w wybranej wcześniej bazie danych + + wyniki = cur.fetchall() + + cur.close() + con.close() + + listbox = Listbox(wyniki_window, width=50) + listbox.grid(row=0,columnspan=2) + scrollbar = Scrollbar(wyniki_window, orient= 'vertical', command=listbox.yview) + scrollbar.grid(row=0,columnspan=2, stick='ens') + a = 0 + for list in wyniki: + listbox.insert(a, list) + a += 1 + listbox.config(yscrollcommand = scrollbar.set) + scrollbar.config(command = listbox.yview) + + simple_label = tk.Label(wyniki_window, text='Pozostaw puste pole by nie uwzglednic') + simple_label.grid(row=1, columnspan=2, stick= 'we') + + simple_label_1 = tk.Label(wyniki_window, text='Nazwa quizu') + simple_label_1.grid(row=2, column=0) + nazwa_quizu_entry = tk.Entry(wyniki_window) + nazwa_quizu_entry.grid(row=2, column=1) + + simple_label_2 = tk.Label(wyniki_window, text='Nazwa ucznia') + simple_label_2.grid(row=3, column=0) + nazwa_ucznia_entry = tk.Entry(wyniki_window) + nazwa_ucznia_entry.grid(row=3, column=1) + + filtr_button = tk.Button( + wyniki_window, + text='Filtruj', + command=filtr_wynik) + filtr_button.grid(row=4, columnspan=2, stick = 'we') + + wyniki_window.mainloop() + + def add_quiz_window(): + add_quiz_window = tk.Tk() + + def add_sql(): + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') + cur1 = con.cursor() + cur2 = con.cursor() + cur3 = con.cursor() + cur4 = con.cursor() + cur5 = con.cursor() + cur6 = con.cursor() + + cur1.execute( + "INSERT INTO `quiz` (`quiz_nazwa`) VALUES ('%s')" % (quiz_nazwa.get())) + cur2.execute( + "INSERT INTO pytania_quiz (quiz_nazwa, pytanie, p_odp, b_odp_1, b_odp_2, b_odp_3) VALUES ('%s','%s','%s','%s','%s','%s')" + % (quiz_nazwa.get(), p1.get(), p_odp_1.get(), b_odp_1_1.get(), b_odp_1_2.get(), b_odp_1_3.get())) + cur3.execute( + "INSERT INTO pytania_quiz (quiz_nazwa, pytanie, p_odp, b_odp_1, b_odp_2, b_odp_3) VALUES ('%s','%s','%s','%s','%s','%s')" + % (quiz_nazwa.get(), p2.get(), p_odp_2.get(), b_odp_2_1.get(), b_odp_2_2.get(), b_odp_2_3.get())) + cur4.execute( + "INSERT INTO pytania_quiz (quiz_nazwa, pytanie, p_odp, b_odp_1, b_odp_2, b_odp_3) VALUES ('%s','%s','%s','%s','%s','%s')" + % (quiz_nazwa.get(), p3.get(), p_odp_3.get(), b_odp_3_1.get(), b_odp_3_2.get(), b_odp_3_3.get())) + cur5.execute( + "INSERT INTO pytania_quiz (quiz_nazwa, pytanie, p_odp, b_odp_1, b_odp_2, b_odp_3) VALUES ('%s','%s','%s','%s','%s','%s')" + % (quiz_nazwa.get(), p4.get(), p_odp_4.get(), b_odp_4_1.get(), b_odp_4_2.get(), b_odp_4_3.get())) + cur6.execute( + "INSERT INTO pytania_quiz (quiz_nazwa, pytanie, p_odp, b_odp_1, b_odp_2, b_odp_3) VALUES ('%s','%s','%s','%s','%s','%s')" + % (quiz_nazwa.get(), p5.get(), p_odp_5.get(), b_odp_5_1.get(), b_odp_5_2.get(), b_odp_5_3.get())) + + con.commit() + cur1.close() + cur2.close() + cur3.close() + cur4.close() + cur5.close() + cur6.close() + con.close() + + tk.Label(add_quiz_window, text='Nazwa quizu').grid(row=0, column=0) + + for x in range(1,6): + tk.Label(add_quiz_window, text='Pytanie').grid(row=x, column=0) + tk.Label(add_quiz_window, text='Poprawna odp').grid(row=x, column=2) + for y in range(4,9): + if (y%2==1): + continue + tk.Label(add_quiz_window, text='Bledna odp').grid(row=x, column=y) + + quiz_nazwa = tk.Entry(add_quiz_window) + quiz_nazwa.grid(row=0, column=1) + + + p1 = tk.Entry(add_quiz_window) + p1.grid(row=1, column=1) + + p_odp_1 = tk.Entry(add_quiz_window) + p_odp_1.grid(row=1, column=3) + + b_odp_1_1 = tk.Entry(add_quiz_window) + b_odp_1_1.grid(row=1, column=5) + + b_odp_1_2 = tk.Entry(add_quiz_window) + b_odp_1_2.grid(row=1, column=7) + + b_odp_1_3 = tk.Entry(add_quiz_window) + b_odp_1_3.grid(row=1, column=9) + + """""" + + p2 = tk.Entry(add_quiz_window) + p2.grid(row=2, column=1) + + p_odp_2 = tk.Entry(add_quiz_window) + p_odp_2.grid(row=2, column=3) + + b_odp_2_1 = tk.Entry(add_quiz_window) + b_odp_2_1.grid(row=2, column=5) + + b_odp_2_2 = tk.Entry(add_quiz_window) + b_odp_2_2.grid(row=2, column=7) + + b_odp_2_3 = tk.Entry(add_quiz_window) + b_odp_2_3.grid(row=2, column=9) + + """""" + + p3 = tk.Entry(add_quiz_window) + p3.grid(row=3, column=1) + + p_odp_3 = tk.Entry(add_quiz_window) + p_odp_3.grid(row=3, column=3) + + b_odp_3_1 = tk.Entry(add_quiz_window) + b_odp_3_1.grid(row=3, column=5) + + b_odp_3_2 = tk.Entry(add_quiz_window) + b_odp_3_2.grid(row=3, column=7) + + b_odp_3_3 = tk.Entry(add_quiz_window) + b_odp_3_3.grid(row=3, column=9) + + """""" + + p4 = tk.Entry(add_quiz_window) + p4.grid(row=4, column=1) + + p_odp_4 = tk.Entry(add_quiz_window) + p_odp_4.grid(row=4, column=3) + + b_odp_4_1 = tk.Entry(add_quiz_window) + b_odp_4_1.grid(row=4, column=5) + + b_odp_4_2 = tk.Entry(add_quiz_window) + b_odp_4_2.grid(row=4, column=7) + + b_odp_4_3 = tk.Entry(add_quiz_window) + b_odp_4_3.grid(row=4, column=9) + + """""" + + p5 = tk.Entry(add_quiz_window) + p5.grid(row=5, column=1) + + p_odp_5 = tk.Entry(add_quiz_window) + p_odp_5.grid(row=5, column=3) + + b_odp_5_1 = tk.Entry(add_quiz_window) + b_odp_5_1.grid(row=5, column=5) + + b_odp_5_2 = tk.Entry(add_quiz_window) + b_odp_5_2.grid(row=5, column=7) + + b_odp_5_3 = tk.Entry(add_quiz_window) + b_odp_5_3.grid(row=5, column=9) + + submit_button = tk.Button( + add_quiz_window, + text='Prześlij', + command=add_sql) + submit_button.grid(columnspan=2, stick='we') + + + + add_quiz_window.mainloop() + + edit_db=tk.Button( + root, + text = 'Edytuj baze pytan', + command = edit_baza_pytan) + edit_db.grid(row=2, column=1) + + wyniki=tk.Button( + root, + text = 'Wyniki', + command = wyniki_window) + wyniki.grid(row=3,column=1) + + okno_add_quiz = tk.Button( + root, + text='Utwórz quiz', + command=add_quiz_window) + okno_add_quiz.grid(row=4, column=1) + + +def user(): + def edit_baza_pytan(): + edit_baza_pytan_window = tk.Tk() + edit_baza_pytan_window.geometry('600x300+300+300') + + def add_pyt_sql(): + add_pytanie.destroy() + del_pytanie.destroy() + + def add_pyt(): + print("ok") + + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') # łączenie się z bazą danych + cur = con.cursor() # tworzy obiekt, dzięki któremu będzie można wysyłać zapytania do bazy danych + + cur.execute( + "INSERT INTO pytania (Pytanie, P_odp, B_odp_1, B_odp_2, B_odp_3) VALUES ('%s','%s','%s','%s','%s')" % ( + pytanie_entry.get(), p_odp.get(), b_odp_1.get(), + b_odp_2.get(), b_odp_3.get())) + + con.commit() + + cur.close() + con.close() + + edit_baza_pytan_window.destroy() + + edit_baza_pytan() + + pytanie_entry_label = tk.Label(edit_baza_pytan_window, text='Pytanie') + p_odp_label = tk.Label(edit_baza_pytan_window, text='Poprawna odpowiedz') + b_odp_1_label = tk.Label(edit_baza_pytan_window, text='Bledna odpowiedz') + b_odp_2_label = tk.Label(edit_baza_pytan_window, text='Bledna odpowiedz') + b_odp_3_label = tk.Label(edit_baza_pytan_window, text='Bledna odpowiedz') + + pytanie_entry = tk.Entry(edit_baza_pytan_window, ) + p_odp = tk.Entry(edit_baza_pytan_window, ) + b_odp_1 = tk.Entry(edit_baza_pytan_window, ) + b_odp_2 = tk.Entry(edit_baza_pytan_window, ) + b_odp_3 = tk.Entry(edit_baza_pytan_window, ) + + add_pytanie_button = tk.Button( + edit_baza_pytan_window, + text='Dodaj pytanie', + command=add_pyt) + + pytanie_entry_label.grid(row=0, column=0) + p_odp_label.grid(row=1, column=0) + b_odp_1_label.grid(row=2, column=0) + b_odp_2_label.grid(row=3, column=0) + b_odp_3_label.grid(row=4, column=0) + + pytanie_entry.grid(row=0, column=1) + p_odp.grid(row=1, column=1) + b_odp_1.grid(row=2, column=1) + b_odp_2.grid(row=3, column=1) + b_odp_3.grid(row=4, column=1) + + add_pytanie_button.grid(row=5, column=1) + + def del_pyt_sql(): + add_pytanie.destroy() + del_pytanie.destroy() + + def del_pyt(): + print("ok") + + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') # łączenie się z bazą danych + cur = con.cursor() # tworzy obiekt, dzięki któremu będzie można wysyłać zapytania do bazy danych + + cur.execute( + "DELETE FROM `pytania` WHERE `id_pytania` = %s" % int(id_pyt.get())) + + con.commit() + cur.close() + con.close() + + edit_baza_pytan_window.destroy() + + edit_baza_pytan() + + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') # łączenie się z bazą danych + cur = con.cursor() # tworzy obiekt, dzięki któremu będzie można wysyłać zapytania do bazy danych + + cur.execute( + "SELECT * FROM `pytania`") # zapytanie o tabele zawarte w wybranej wcześniej bazie danych + + wyniki = cur.fetchall() + + cur.close() + con.close() + + listbox = Listbox(edit_baza_pytan_window) + a = 0 + for list in wyniki: + listbox.insert(a, list) + a += 1 + listbox.grid(row=0, column=0) + + id_pyt = tk.Entry(edit_baza_pytan_window, ) + id_pyt.grid(row=1, column=0) + + del_pytanie_button = tk.Button( + edit_baza_pytan_window, + text='Usun', + command=del_pyt) + + del_pytanie_button.grid(row=2, column=0) + + add_pytanie = tk.Button( + edit_baza_pytan_window, + text='Dodaj pytanie do bazy', + command=add_pyt_sql) + add_pytanie.grid(row=0, column=0) + + del_pytanie = tk.Button( + edit_baza_pytan_window, + text='Usuń pytanie z bazy', + command=del_pyt_sql) + del_pytanie.grid(row=1, column=0) + + edit_baza_pytan_window.mainloop() + + def wyniki_window(): + wyniki_window = tk.Tk() + wyniki_window.geometry('600x300+300+300') + + print("ok") + + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') # łączenie się z bazą danych + cur = con.cursor() # tworzy obiekt, dzięki któremu będzie można wysyłać zapytania do bazy danych + + cur.execute( + "SELECT * FROM `wyniki`") # zapytanie o tabele zawarte w wybranej wcześniej bazie danych + + wyniki = cur.fetchall() + for record in wyniki: + print(record) # wyświetlanie rekordów (w tym przypadku to są nazwy tabelek) + + cur.close() + con.close() + + listbox = Listbox(wyniki_window) + a = 0 + for list in wyniki: + listbox.insert(a, list) + a += 1 + listbox.pack() + + wyniki_window.mainloop() + + okno_dodania_pytania = tk.Button( + root, + text='Edytuj baze pytan', + command=edit_baza_pytan) + okno_dodania_pytania.grid(row=2, column=1) + + okno_wyniki = tk.Button( + root, + text='Wyniki', + command=wyniki_window) + okno_wyniki.grid(row=3, column=1) + +def start_app(): + name = socket.gethostname() + + con = mysql.Connect(host="127.0.0.1", user='root', passwd='', db='test') # łączenie się z bazą danych + cur = con.cursor() # tworzy obiekt, dzięki któremu będzie można wysyłać zapytania do bazy danych + + cur.execute( + 'SELECT Typ FROM users where Nazwa = \'%s\'' % name) + wynik = cur.fetchone() + + + if (wynik[0] == 'Admin' or wynik[0] == 'admin'): + admin() + elif(wynik[0] == 'User' or wynik[0] == 'user'): + user() + +start_app() + +root.mainloop()