Seite 1 von 1

Toolbar auf Win32 XP

Verfasst: Sonntag 2. August 2009, 19:06
von Dav1d
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

Verfasst: Sonntag 2. August 2009, 19:48
von jbs
versuch mal toolbar.Realize() richtig einzurücken. ist aber auch auf der originalseite falsch

Verfasst: Sonntag 2. August 2009, 19:49
von Lonestar
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

Verfasst: Sonntag 2. August 2009, 20:00
von EyDu
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.

Verfasst: Montag 3. August 2009, 08:21
von Dav1d
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)

Verfasst: Montag 3. August 2009, 09:01
von HWK
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

Verfasst: Montag 3. August 2009, 09:07
von Dav1d
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

Verfasst: Montag 3. August 2009, 09:21
von Rebecca
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)'
>>> 

Verfasst: Montag 3. August 2009, 09:30
von Dav1d
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]