Minimaler Code für einen Dialog?

Plattformunabhängige GUIs mit wxWidgets.
Antworten
lafcadio
User
Beiträge: 3
Registriert: Samstag 4. August 2007, 11:28
Wohnort: Berlin

Samstag 4. August 2007, 12:05

Hallo

Ich habe versucht aus den Demos den Code für einen Progress-Dialog auf das minimalste zu reduzieren, um damit ein Skript aufzuwerten, das ansonsten ohne irgendeine Ausgabe (unter Macos) im Hintergrund läuft. Aber ich kriege es nicht hin, den Hauptframe wegzulassen. Da der aber eh nicht angezeigt wird, wäre es natürlich schön, wenn ich auf den auch noch verzichten könnte.

Mein reduzierter (den Demos entlehnter) Code:

Code: Alles auswählen

import wx

class MyFrame(wx.Frame):

	def show_progr(self):
		max = 20
		dlg = wx.ProgressDialog("Progress dialog example",
						"An informative message",
						maximum = max,
						parent=self,
						style = wx.PD_CAN_ABORT | wx.PD_APP_MODAL)

		keepGoing = True
		count = 0
		while keepGoing and count < max:
			count += 1
			wx.Sleep(1)
			keepGoing,plac = dlg.Update(count)

		dlg.Destroy()
		self.Destroy()

class MyApp(wx.App):
	def OnInit(self):
		frame = MyFrame(None)
		frame.Show(False)
		frame.show_progr()
		return True

app = MyApp()
app.MainLoop()
Für jede Anregung dankbar, L.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Samstag 4. August 2007, 13:04

lafcadio hat geschrieben:Code für einen Progress-Dialog auf das minimalste zu reduzieren
Hallo lafcadio!

Willkommen im Python-Forum!

Ohne jetzt näher auf "sleep" einzugehen (das lässt deine komplette Anwendung schlafen):

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import wx

wx.SetDefaultPyEncoding("iso-8859-15")


def main():
    app = wx.PySimpleApp()
    
    max = 20
    dlg = wx.ProgressDialog(
        "Progress dialog example",
        "An informative message",
        maximum = max,
        style = wx.PD_CAN_ABORT | wx.PD_APP_MODAL
    )
    
    keepGoing = True
    count = 0
    while keepGoing and count < max:
        count += 1
        wx.Sleep(1)
        keepGoing, plac = dlg.Update(count)
    dlg.Destroy()


if __name__ == "__main__":
    main()
mfg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
lafcadio
User
Beiträge: 3
Registriert: Samstag 4. August 2007, 11:28
Wohnort: Berlin

Samstag 4. August 2007, 13:57

Hallo Gerold

Vielen Dank! So sieht das ja gleich viel übersichtlicher aus. Verstehen tu ich's
zwar nicht so ganz, aber hauptsache es funktioniert (werd gelegentlich mal
die Doku zu PySimpleApp konsultieren).

Gruß, L.
Antworten