Cleanup and redifine
This commit is contained in:
257
gui-tests.py
Normal file
257
gui-tests.py
Normal file
@@ -0,0 +1,257 @@
|
||||
from ast import If
|
||||
import sqlite3
|
||||
import time
|
||||
import threading
|
||||
import tkinter
|
||||
from turtle import left, width
|
||||
import User
|
||||
import sys
|
||||
import tkinter as tk
|
||||
from direct import task
|
||||
from tkinter import Scale, StringVar
|
||||
from random import random
|
||||
|
||||
#TODO Klassen erstellten
|
||||
|
||||
def button_event_close():
|
||||
print("Programm wird geschlossen")
|
||||
|
||||
return 0;
|
||||
|
||||
def guithread():
|
||||
|
||||
window_size_x = 1024
|
||||
window_size_y = 786
|
||||
|
||||
label_logged_in = tk.Label
|
||||
label_highscore = tk.Label
|
||||
label_lastlogin = tk.Label
|
||||
|
||||
|
||||
#Hauptfenster-Block
|
||||
window1 = tk.Tk() #Instanzierung von Fensterelement
|
||||
window1.wm_title("Snake v1.0")
|
||||
window1.geometry("1024x768")
|
||||
window1.attributes("-topmost", True)
|
||||
|
||||
|
||||
print("Erstelle User-Klassen Objekt")
|
||||
us = User.User()
|
||||
|
||||
#Mit der Parameterübergabe der Klasseninstantz Tk, kann auch in einer Methode oder Funktion die Instantz direkt manipuliert werden!
|
||||
def mainwindow_test(mainwindow : tk.Tk):
|
||||
mainwindow.quit()
|
||||
pass
|
||||
|
||||
def close_mainwindow():
|
||||
print("Programm wird geschlossen!")
|
||||
window1.quit()
|
||||
|
||||
def read_user(username, schaltf2:tk.Label, label_user_exists:tk.Label, all_listed_radiob:list): #Eingabeprüfung, bei Exception bei leerem String oder Eingabefeld
|
||||
unametemp = username #eingabefeld_wert.get()
|
||||
if(len(unametemp) != 0):
|
||||
print("Lese Nutzereingabe: ", unametemp, "\n")
|
||||
if(us.select(unametemp) == True):
|
||||
welcome_msg = "Willkommen, " + us.getusername()
|
||||
highscore_msg = "Dein letzter Highscore lag bei: " + str(us.gethighscore()) + " Punkten"
|
||||
lastlogin_msg = "Du warst das letzte Mal am: " + us.getlastlogin() + " am Spielen"
|
||||
label_logged_in = tk.Label(window1, text=welcome_msg)
|
||||
label_highscore = tk.Label(window1, text=highscore_msg)
|
||||
label_lastlogin = tk.Label(window1, text=lastlogin_msg)
|
||||
label_logged_in.place(x=180, y=50)
|
||||
label_highscore.place(x=180, y=80)
|
||||
label_lastlogin.place(x=180, y=110)
|
||||
label_user_exists.destroy()
|
||||
schaltf2.destroy()
|
||||
|
||||
#Zerstört alle gezeichneten Insantzen von Radiobuttons
|
||||
for radiobutton in all_listed_radiob:
|
||||
radiobutton.destroy()
|
||||
return
|
||||
else:
|
||||
print("Bitte etwas eingeben... Das Feld war leer!")
|
||||
return
|
||||
|
||||
def input_new_user(*events):
|
||||
|
||||
#Eingabefenster-Block
|
||||
subwindow1 = tk.Toplevel(window1)
|
||||
subwindow1.wm_title("Eingabe")
|
||||
subwindow1.geometry("400x200")
|
||||
subwindow1.resizable(0,0) #Blockiert ein Skalieren des Fensters
|
||||
window1.attributes("-topmost", False)
|
||||
subwindow1.attributes("-topmost", True)
|
||||
subwindow1.lift() #Hebt das Child-Fenster zumsammen mit attributes in den Vordergrund
|
||||
|
||||
|
||||
eingabewert = StringVar(subwindow1)
|
||||
def check_input():
|
||||
if(len(eingabewert.get()) <= 0):
|
||||
print("Es wurde keine Eingabe gemacht!")
|
||||
else:
|
||||
print(eingabewert.get())
|
||||
us.createuser(eingabewert.get())
|
||||
subwindow1.destroy()
|
||||
build_mainwindow(window1)
|
||||
return
|
||||
|
||||
textlabel = tk.Label(subwindow1, text="Bitte gib deinen Benutzernamen ein: ")
|
||||
label_new_user = tk.Entry(subwindow1, width=40, textvariable=eingabewert)
|
||||
button_ok = tk.Button(subwindow1, text="Erstellen", height=1, width=10, command=check_input)
|
||||
button_abort = tk.Button(subwindow1, text="Abbrechen", command=subwindow1.destroy)
|
||||
|
||||
textlabel.place(x=5, y=5)
|
||||
label_new_user.place(x=6, y=25)
|
||||
button_ok.place(x=5, y=150)
|
||||
button_abort.place(x=140, y=150)
|
||||
#label_new_user.place(x=window_size_x*0.25, y=window_size_y*0.6)
|
||||
|
||||
def build_mainwindow(window1 : tk.Tk):
|
||||
#Programmüberschrift
|
||||
label1 = tk.Label(window1, text="Snake v1.0 written by CB") #Fenster Funktion für Textausgabe
|
||||
label1.grid(row=0, column=0)
|
||||
#Schaltflächen und Buttons
|
||||
schaltf1 = tk.Button(window1, text="Fenster schließen", command=close_mainwindow)
|
||||
schaltf1.place(x=5, y=window_size_y-50)
|
||||
|
||||
aktuell_ausgewaehlt =""
|
||||
|
||||
|
||||
|
||||
if(us.checkuserdb() == False):
|
||||
#Anmeldedialog
|
||||
print("Noch kein Nutzer angelegt!")
|
||||
#messagebox.Message(master=None, message="Es wurde noch kein Spieler angelegt!", type=messagebox.OK, icon=messagebox.WARNING).show()
|
||||
input_new_user()
|
||||
|
||||
elif(us.checkuserdb() == True):
|
||||
print("Nutzer bereits vorhanden, wähle einen aus!")
|
||||
#us.listallusers()
|
||||
|
||||
users = us.listallusers()
|
||||
ausgewaehlt = tk.StringVar()
|
||||
|
||||
ausgewaehlt.set(0)
|
||||
def value_select():
|
||||
aktuell_ausgewaehlt = str(ausgewaehlt.get())
|
||||
print(aktuell_ausgewaehlt)
|
||||
return 0
|
||||
|
||||
print (aktuell_ausgewaehlt)
|
||||
|
||||
all_listed_radiob = list()
|
||||
|
||||
i = 0
|
||||
for einzelwert in users:
|
||||
radiob = tk.Radiobutton(window1, text=einzelwert, value=einzelwert, variable=ausgewaehlt, command=value_select)
|
||||
all_listed_radiob.append(radiob)
|
||||
print (users)
|
||||
radiob.place(x=5, y=150+i)
|
||||
i+=30
|
||||
|
||||
print("Alle Radiobuttons gesetzt!")
|
||||
|
||||
def login_user():
|
||||
print("Melde ausgewählten Nutzer an!\n")
|
||||
read_user(ausgewaehlt.get(), schaltf2, label_user_exists, all_listed_radiob)
|
||||
return 0
|
||||
|
||||
label_user_exists = tk.Label(window1, text="Wähle deinen Spieler aus: ")
|
||||
label_user_exists.place(x=2, y=30)
|
||||
#eingabefeld_wert=tk.StringVar()
|
||||
|
||||
#eingabefeld=tk.Entry(window1, textvariable=eingabefeld_wert)
|
||||
#eingabefeld.place(x=2, y=80)
|
||||
schaltf2 = tk.Button(window1, text="Auswählen", command=login_user)
|
||||
schaltf2.place(x=150, y=75)
|
||||
|
||||
build_mainwindow(window1)
|
||||
|
||||
#Nützliches Feature um zeitgesteuerte Events in Mainloop ausführen zu können
|
||||
def message():
|
||||
print('Keep yourself hyderated.')
|
||||
window1.after(2000, message)
|
||||
|
||||
#window1.after(2000, message)
|
||||
window1.mainloop() #Hauptschleife für gezeichnetes Fenster
|
||||
us.__del__() #Stellt sicher, dass User-Klassenobjekt im korrekten Thread beendet wird
|
||||
return 0;
|
||||
|
||||
|
||||
|
||||
class woscht(User.User):
|
||||
def __init__(self) -> None:
|
||||
UserInstanz = User
|
||||
print("Unterklasser der Userklasse erstellt!\n")
|
||||
print("So funktioniert die Klassenvererbung in Python...")
|
||||
print("Dies ermöglicht eine modulare Aufbauweise ohne sich ständig bei kleineren Abweichung wiederholen zu müssen ober ganze Abschnitte zu kopieren und einzufügen\n")
|
||||
|
||||
def Testfunkiton(self):
|
||||
print("Das ist eine Funktion, welche ausgeführt wird in einer Kindklasse. Sie existiert nicht in der Elternklasse!\n")
|
||||
pass
|
||||
def Testfunktion2(self):
|
||||
print("Weitere Funktion, welche bei initialisieren der Klasse aufgerufen wird.\n")
|
||||
pass
|
||||
|
||||
class woscht2(woscht):
|
||||
def __init__(self) -> None:
|
||||
woscht().Testfunktion2()
|
||||
print("Unterklasse der Woschtklasse\n")
|
||||
print("Die stellt eine Vererbung auf eine Vererbung dar. Hier können weitere Ergänzungen vorgenommen werden\n")
|
||||
pass
|
||||
|
||||
#Eine Schleife, welche unter Zuhilfenahme einer Rekursion entsteht.
|
||||
def recursive(zahl):
|
||||
if(zahl==100):
|
||||
print("Vorgang abgeschlossen!")
|
||||
return
|
||||
elif(zahl <= 100):
|
||||
zahl += 1
|
||||
time.sleep(0.001)
|
||||
print(zahl, end="\r")
|
||||
return recursive(zahl)
|
||||
else:
|
||||
print("Ergeniss konnte nicht erreicht werden!")
|
||||
return
|
||||
|
||||
|
||||
def main():
|
||||
t = threading.Thread(target=guithread ,args=())
|
||||
t.start()
|
||||
#recursive(0)
|
||||
#while(True):
|
||||
# pass
|
||||
|
||||
"""
|
||||
test = woscht()
|
||||
test.getusername()
|
||||
|
||||
test2 = woscht2()
|
||||
test2.Testfunkiton()
|
||||
|
||||
testtu = list()
|
||||
|
||||
#Mit dieser Funktion können mehrer Instanzen einer KLasse erstellt werden und im späteren Verlauf über den Listenindex bearbeitet werden.
|
||||
for i in range(5):
|
||||
testtu.append(woscht2())
|
||||
|
||||
print("Es wurden folgenden Klassen erstellt: ")
|
||||
print (len(testtu))
|
||||
|
||||
|
||||
for i in testtu:
|
||||
print(i)
|
||||
"""
|
||||
|
||||
|
||||
# FH = open("user.txt", "w")
|
||||
# FH.write(us.getusername())
|
||||
# FH.close()
|
||||
time.sleep(1)
|
||||
|
||||
return 0
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user