Seite 1 von 1
Programm mit GUI versehen
Verfasst: Donnerstag 5. Oktober 2017, 22:04
von Lou Cyphr3
Guten Abend,
ich habe mich gerade gefragt, wie ich eine GUI um ein Programm baue.
Als Anwendungsbeispiel:
Code: Alles auswählen
import time
print('" text1..."')
time.sleep(3)
print('text1')
a = input('')
if a == 'a':
print('text3')
Muss ich jetzt eine seperate GUI schreiben, welche die Funktion abruft oder muss um die "Funktion" eine GUI geschrieben werden?
sincerly
Lou
Re: Programm mit GUI versehen
Verfasst: Freitag 6. Oktober 2017, 08:03
von Melewo
Dafür nicht, für andere kleine Tests von Codeschnipseln auch nicht. print() wird in einer GUI nicht verwendet, sleep sollte in einer GUI nicht verwendet werden und für input gibt es dann die entsprechenden Widgets mit Eingabefeldern. Eine GUI verwendest Du, wenn Du eine Anwendung schreiben möchtest, die aussehen soll wie eine Fensteranwendung.
Re: Programm mit GUI versehen
Verfasst: Freitag 6. Oktober 2017, 13:24
von Lou Cyphr3
Okay, war von mir falsch formuliert. Ich dachte Graphic User Interface könnte auch ein Display sein. Wie auch immer jedenfalls
soll das alles in einem Fenster ablaufen. Ich hatte jetzt an Pygame gedacht, wobei mir immer noch nicht klar ist, wie ich den Text in das Display bekomme, wenn ich jetzt display initialisiere, bekomm ich quasi nur ein Display und der ganze printkram läuft nur in der Shell.
Kann mir wer auf die Sprünge helfen?
Re: Programm mit GUI versehen
Verfasst: Freitag 6. Oktober 2017, 13:39
von __deets__
Pygame kann text darstellen, ist aber alles etwas fummeliger als ein einfaches Print. Oder ein Label in einer GUI.
Wie waere es wenn du uns mal erzaehlst was du dir am Ende vorstellst, statt schon gleich mit Technologien einzusteigen, deren Eignung noch unklar ist.
Re: Programm mit GUI versehen
Verfasst: Freitag 6. Oktober 2017, 14:34
von Lou Cyphr3
Es soll eine Art Textadventure werden, wo quasi Usereingaben essentiell sind.
Re: Programm mit GUI versehen
Verfasst: Freitag 6. Oktober 2017, 14:55
von __deets__
Wenn es ein reines Text Adventure sein soll, nimm das Terminal. Nicht umsonst laufen auch heute noch MUDs etc dort.
Wenn es noch bebildert werden soll, kommt es auf die Interaktion an. Wirklich Sätze eingeben? Nimm zB Tkinter & ein Texteingabefeld. Auswah von vorgegebenen Worten oder Fragen? Dann ist pygame ganz gut. Tkinter geht aber auch da.
Re: Programm mit GUI versehen
Verfasst: Sonntag 8. Oktober 2017, 03:45
von Lou Cyphr3
Ja früher oder später ist bebildert schon auf dem plan.
ich hab mal ein pygame test gemacht mit inspiration aus dem Internet.
Code: Alles auswählen
[code]import pygame
import sys
import time
pygame.init()
cSec = 0
cFrame = 0
FPS = 0
fps_font = pygame.font.Font("/usr/local/share/fonts/Arial.ttf", 20)
def show_fps():
fps_overlay = fps.font.render((str(FPS), True, 0, 0, 0)
window.blit(fps_overlay, (0, 0)):
def create_window():
global window, window_height, window_width, window_title
window_width, window_height = 800, 600
window_title = "The tale"
pygame.display.set_caption(window_title)
window = pygame.display.set_mode((window_width, window_height), pygame.HWSURFACE|pygame.DOUBLEBUF)
def count_fps():
global cSec, cFrame, FPS
if cSec == time.strftime("%S"):
cFrame += 1
else:
FPS = cFrame
cFrame = 0
cSec = time.straftime("%S")
create_window()
isRunning = True
while isRunning:
for event in pygame.event.get():
if event.type == pygame.QUIT:
isRunning = False
window.fill((255, 0, 255))
show_fps()
pygame.display.update()
pygame.quit()
sys.exit()
[/code]
Dazu zwei Sachen:
1. Ich bin mir nicht sicher wie ich zu den "global" stehen soll.
2.
window.blit(fps_overlay, (0, 0)):
^
SyntaxError: invalid syntax
Re: Programm mit GUI versehen
Verfasst: Sonntag 8. Oktober 2017, 08:53
von Sirius3
global vermeidet man dadurch, dass man alles war zur Grafikausgabe gehört in einer Klasse definiert. Anweisungen werden nicht mit : abgeschlossen, daher der Syntaxfehler. Frames per second werden normalerweise über Zeit seit dem letzten Frame berechnet.
Re: Programm mit GUI versehen
Verfasst: Sonntag 8. Oktober 2017, 23:21
von Lou Cyphr3
okay. was war nochmal der grund weshalb man globale vermeiden sollte?
den syntax fehler zeigt es mir auch ohne : an.
Code: Alles auswählen
File "übung.py", line 15
window.blit(fps_overlay, (0, 0))
^
SyntaxError: invalid syntax
Re: Programm mit GUI versehen
Verfasst: Montag 9. Oktober 2017, 06:49
von Sirius3
@Lou Cyphr3: weil da noch weitere Syntax-Fehler sind. Zähl mal die Klammern in der Zeile davor.
In Deinem Fall ist "global" unnötig, weil Du besser richtige Funktionen schreiben solltest, die auch Rückgabewerte haben.
Ohne "global" könnte das so aussehen (ungetestet):
Code: Alles auswählen
import pygame
import sys
import time
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600
def show_fps(window, font, fps):
fps_overlay = font.render("{:.1f}".format(fps), True, 0, 0, 0)
window.blit(fps_overlay, (0, 0))
def create_window():
pygame.init()
pygame.display.set_caption("The tale")
return pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT), pygame.HWSURFACE|pygame.DOUBLEBUF)
def main():
window = create_window()
font = pygame.font.Font("/usr/local/share/fonts/Arial.ttf", 20)
last_time = 0
while True:
current_time = time.time()
fps = 1 / (current_time - last_time)
last_time = current_time()
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
window.fill((255, 0, 255))
show_fps(window, font, fps)
pygame.display.update()
pygame.quit()
if __name__ == '__main__':
main()