Nachdem ich Euch ja gestern mit meinem Watchfolder-Skript genervt habe (http://www.python-forum.de/topic-14214.html) bin ich heute nen Schritt weiter Ich moechte parallel zu der Entwicklung des Skripts auch versuchen, diesem eine kleine Oberflaeche zu verpassen. Also moechte ich nebenher auch wxpython mit lernen.
Nach dem Durchlesen einiger Tutorials und Anschauen von Tutorialvideos hab ich zumindest einen Teil des Grundkonzeptes leidlich verstanden. Es tauchen fuer mich bei meinem konkreten Fall aber 2 Fragen auf, die ich grad aus den Sachen nicht so richtig rauslesen kann. Denn die Tutorials sind eigentlich erstmal alle so dass ne GUI aufgebaut wird und dann mit "normalen" Eventhandlern wie Mausbewegung, Klick, usw. eine Handlung ausgefuehrt wird. Das kann ich nachvollziehen. Bei mir soll aber ein wenig was anderes passieren. Hier mal ein vereinfachtes Beispiel:
Ich hab erstens folgendes Miniskript:
Code: Alles auswählen
import os.path
checkfile = 'V:/.busy.iridas'
while True:
if os.path.exists(checkfile):
statustext = 'Pausing work, FC is playing'
bgcolor = 'Red'
else:
statustext = 'Working'
bgcolor = 'Green'
Desweiteren hab ich eine Mini-GUI wie diese hier:
Code: Alles auswählen
import wx
class MainWindow(wx.Frame):
def __init__(self, parent = None, id = -1, title = 'GUI_Test'):
wx.Frame.__init__(
self, parent, id, title, size = (400, 100),
style = wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE
)
panel = wx.Panel(self, -1)
# FC_status
statustext = 'Pausing work, FC is playing'
bgcolor = 'Red'
self.text = wx.StaticText(panel, -1, statustext, (20,20), (360,20), wx.ALIGN_CENTER).SetBackgroundColour(bgcolor)
self.Show(True)
app = wx.PySimpleApp()
frame = MainWindow()
app.MainLoop()
Ich kapier jetzt nur 2 Grundprinzipe nicht:
1. wo muss denn der Skriptteil innerhalb des GUI-Codes platziert werden? Ist dann ganz unten nach dem MainLoop oder passiert das alles innerhalb der MainWindow-Klasse?
2. Ich kann ja ganz einfach die Variable 'statustext' aendern in Abhaengigkeit von der for-Abfrage. Aber da passiert ja dann kein Event sondern das ist etwas was im Hintergrund ohne Useraction passiert. Wie funktioniert das jetzt dass das trotzdem einen Refresh der GUI ausloest. Muss ich da selbst einen Event "erzwingen" in irgendeiner Form oder wie geht das?
Danke und sorry fuer diese vielleicht arge Basic-Frage. Das Buch "wxpython in Action" ist bestellt und ich werd das dann auch systematisch durcharbeiten. Nur mach ich das alles momentan hier im Job und da kann ich nicht erst alles komplett systematisch lernen und dann erst anfangen, was Produktives zu entwickeln. Mir stellen sich halt jeden Tag kleine Aufgaben, fuer die ich so Stueck fuer Stueck auch Mini-Loesungen haben moechte, die ich dann im Laufe der Zeit verbessern und optimieren kann, wenn ich parallel die Grundlagen besser und besser verstehe.