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
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
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]