Toolbar auf Win32 XP

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Hallo Community,

ich versuche gerade wxPython zu lernen mit dem tut: http://www.zetcode.com/wxpython/ <- ich finds sogar sehr gut, jetzt zu meinem Problem: immer wenn ein Beispielcode mit Toolbar drankommt, blinkt kurz ein weißes Fenster auf und das wars, jetzt ist in dem tut eine einzelne Toolbar vorgekommen, habs versucht, das selbe, hier der code:

Code: Alles auswählen

#!/usr/bin/python

# simpletoolbar.py

import wx

class SimpleToolbar(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(300, 200))

        toolbar = self.CreateToolBar()
        toolbar.AddLabelTool(wx.ID_EXIT, '', wx.Bitmap('../icons/exit.png'))
	toolbar.Realize()

        self.Bind(wx.EVT_TOOL, self.OnExit, id=wx.ID_EXIT)

        self.Centre()
        self.Show(True)

    def OnExit(self, event):
        self.Close()


app = wx.App()
SimpleToolbar(None, -1, 'simple toolbar')
app.MainLoop()
OS = Windows XP 32Bit
und es kommt kein Fehler nur das kurz aufblinkende weiße Fenster das wars

hoffentlich könnt ihr mir helfen


mfg
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

versuch mal toolbar.Realize() richtig einzurücken. ist aber auch auf der originalseite falsch
Lonestar
User
Beiträge: 147
Registriert: Samstag 9. August 2008, 08:31

Hi Dav1d,
in dem aufblinkendem Fenster steht dein kompletter Traceback. Ohne deinen Code näher angesehen zu haben solltest du schon mal den Traceback lesen können wenn du einfach die Zeile 24 in deinem Code austauschst

Code: Alles auswählen

app = wx.App(redirect=False)
ach ja, das schaut so aus als ob zumindest hier im Forum ein Einrückungsfehler sein dürfte
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Lonestar hat geschrieben:ach ja, das schaut so aus als ob zumindest hier im Forum ein Einrückungsfehler sein dürfte
Ja, Leerzeichen und Tabs wurden vermischt.

@Dav1d: Du solltest immer nur mit Leerzeichen einrücken, jede Ebene mit vier Stück. Wenn du auf Tabs nicht verzichten möchtest, dann stelle deinen Editor so ein, dass Tabs automatisch in vier Leerzeichen umgewandelt werden.
Das Leben ist wie ein Tennisball.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

das mit dem einrücken ist ein Forumseinrückfehler, habs auch schon versucht auszubessern

wenn ich zeile 25 ändere

app = wx.App(redirect=False)

kommt das:

Code: Alles auswählen

C:\Python26\code\wxPython>python simpletoolbar.py
Traceback (most recent call last):
  File "simpletoolbar.py", line 26, in <module>
    SimpleToolbar(None, -1, 'simple toolbar')
  File "simpletoolbar.py", line 13, in __init__
    toolbar.Realize()
  File "C:\Python26\lib\site-packages\wx-2.8-msw-unicode\wx\_controls.py", line
3875, in Realize
    return _controls_.ToolBarBase_Realize(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "wxAssertFailure" failed at ..\..\src\m
sw\tbar95.cpp(726) in wxToolBar::Realize(): invalid tool button bitmap
das exit.png = https://stage.maemo.org/svn/maemo/proje ... k-quit.png

//EDIT: Fehler gefunden :oops:
toolbar.Realize()

After we have put our items to the toolbar, we call the Realize() method. Calling this method is not obligatory on Linux. On windows it is.

self.Bind(wx.EVT_TOOL, self.OnExit, id=wx.ID_EXIT)
Danke für eure Hilfe

//Edit2:

der code ist jetzt:

Code: Alles auswählen

#!/usr/bin/python

# simpletoolbar.py

import wx

class SimpleToolbar(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(300, 200))

        toolbar = self.CreateToolBar()
        toolbar.AddLabelTool(wx.ID_EXIT, '', wx.Bitmap('icons/exit.png'))
        
        self.Bind(wx.EVT_TOOL, self.OnExit, id=wx.ID_EXIT)

        self.Centre()
        self.Show(True)

    def OnExit(self, event):
        self.Close()



app = wx.App(redirect=False)
SimpleToolbar(None, -1, 'simple toolbar')
app.MainLoop()
es wird mir auch ein fenster angezeigt, es kommt auch kein fehler, von wegen png nicht gefunden,, aber es wird nix angezeigt

//EDIT3:
Mir wird bei keiner Toolbar irgendetwas angezeigt (Toolbars von dem Tut)
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Bei mir

Code: Alles auswählen

Das ist meine Umgebung:
=======================
sys.version: 2.6.1 (r261:67517, Dec  4 2008, 16:51:00) [MSC v.1500 32 bit (Intel)]
sys.platform: win32
sys.winver: 2.6
wx.VERSION_STRING: 2.8.9.1
klappt es mit Realize() wunderbar. Ohne wird nichts angezeigt.
MfG
HWK
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Bei mir nicht

Mein Python
sys.version: '2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)]'
sys.platform: 'win32'
sys.winver: '2.6'
wx.VERSION_STRING: '2.8.10.1'
Eig, hab ich nur ne neuere wxPython Version
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Stimmt, ist bei mir unter Windows auch so, mit toolbar.Realize() klappt's, ohne nicht. Unter Linux geht es ohne, aber das ist mir schon oefter aufgefallen, dass man unter Windows so Funktionen wie Update oder hier halt Realize braucht und unter Linux nicht.

Code: Alles auswählen

Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on win32
>>>import wx
>>> wx.version()
'2.8.10.1 (msw-unicode)'
>>> 
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

omg ich bin dumm
toolbar.Realize()

After we have put our items to the toolbar, we call the Realize() method. Calling this method is not obligatory on Linux. On windows it is.

self.Bind(wx.EVT_TOOL, self.OnExit, id=wx.ID_EXIT)
ich habs nicht kapiert omfg, deshalb hab ich immer versucht die 2 zeilen zu ändern, anstatt den Pfad

der pafd = 'icons\exit.png' nicht '../icons/exit.png' jetzt gehts, danke an alle[/quote]
Antworten