Man sieht ja immer wieder Menüs, die fett gedruckte Einträge enthalten, z.B. Schließen im Taskbar bei Windows. Gibt es in wxPython eine Möglichkeit, das zu erreichen?
Danke
HWK
Fett gedruckter Menü-Eintrag
So, ich hab's jetzt mal probiert. Zum einen muss man erst das MenuItem mit dem entsprechenden Font erstellen, bevor man es zum Menü hinzufügt, damit die Änderung sichtbar wird. Zum anderen sind die Einträge ab dem geänderten Font alle um ein Zeichen nach rechts verschoben. Das zweite ist schon etwas störend. Gibt's dafür eine Erklärung bzw. besser eine Lösung?
[Edit] Ich hab's jetzt erst mal notdürftig gelöst, indem ich auch dem ersten Eintrag einen neuen (allerdings unveränderten) Font zugewiesen habe. Dann stimmt die Ausrichtung. Wenn man dann aber Bitmaps zufügt, kommt alles wieder durcheinander. Scheint ein bisschen chaotisch implementiert zu sein.
MfG
HWK
Code: Alles auswählen
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Playing with menus', size=(400, 200))
self.CenterOnScreen()
tc = wx.TextCtrl(self, -1, '''Probetext''',
style=wx.TE_READONLY|wx.TE_MULTILINE)
menuBar = wx.MenuBar()
menu1 = wx.Menu()
menu1.Append(101, '&Mercury')
menu1.Append(102, '&Venus')
item = wx.MenuItem(menu1, 103, '&Erde')
font = item.GetFont()
font.SetWeight(wx.FONTWEIGHT_BOLD)
font = wx.Font(font.GetPointSize(), font.GetFamily(), font.GetStyle(),
font.GetWeight())
item.SetFont(font)
menu1.AppendItem(item)
menu1.AppendSeparator()
menu1.Append(104, '&Close')
menuBar.Append(menu1, '&Planets')
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU, self.Menu101, id=101)
self.Bind(wx.EVT_MENU, self.Menu102, id=102)
self.Bind(wx.EVT_MENU, self.Menu103, id=103)
self.Bind(wx.EVT_MENU, self.CloseWindow, id=104)
def Menu101(self, event):
print 'Merkur'
def Menu102(self, event):
print 'Venus'
def Menu103(self, event):
print 'Erde'
def CloseWindow(self, event):
self.Close()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show()
app.MainLoop()
MfG
HWK
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi HWK!HWK hat geschrieben:Zum anderen sind die Einträge ab dem geänderten Font alle um ein Zeichen nach rechts verschoben.
Das war meine Gegenprobe:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import wx
wx.SetDefaultPyEncoding("iso-8859-1")
class MyFrame(wx.Frame):
def __init__(
self, parent = None, id = -1, title = "Example", size = wx.Size(550, 420)
):
wx.Frame.__init__(self, parent, id, title, size = size)
# Menubar
menubar = wx.MenuBar()
# File-Menu
mnu_file = wx.Menu()
mnu_f_new = mnu_file.Append(-1, "&New\tCTRL+N")
self.Bind(wx.EVT_MENU, self.new_file, mnu_f_new)
mnu_f_open = wx.MenuItem(mnu_file, text = "&Open\tCTRL+O")
font = mnu_f_open.GetFont()
font.SetWeight(wx.BOLD)
mnu_f_open.SetFont(font)
mnu_file.AppendItem(mnu_f_open)
self.Bind(wx.EVT_MENU, self.open_file, mnu_f_open)
mnu_f_exit = mnu_file.Append(-1, "E&xit")
self.Bind(wx.EVT_MENU, self.close_frame, mnu_f_exit)
menubar.Append(mnu_file, "&File")
# Activate Menubar
self.SetMenuBar(menubar)
def close_frame(self, event = None):
self.Close()
def open_file(self, event = None):
print "Open file..."
def new_file(self, event = None):
print "New file..."
def main():
"""Testing"""
app = wx.PySimpleApp()
f = MyFrame()
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()

lg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Laut "wxPython in Action" Seite 317 haben wir in unserem Code nichts falsch gemacht. :K
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Zur Information der Code mit der notdürftigen Anpassung, damit die Ausrichtung stimmt:MfG
HWK
Code: Alles auswählen
# -*- coding: cp1252 -*-
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Tests mit Menüs', size=(400, 200))
self.CenterOnScreen()
tc = wx.TextCtrl(self, -1, '''Probetext''', style=wx.TE_READONLY)
menuBar = wx.MenuBar()
menu = wx.Menu()
item = wx.MenuItem(menu, 101, '&Merkur')
item.SetFont(item.GetFont())
menu.AppendItem(item)
menu.Append(102, '&Venus')
item = wx.MenuItem(menu, 103, '&Erde')
font = item.GetFont()
font.SetWeight(wx.FONTWEIGHT_BOLD)
item.SetFont(font)
menu.AppendItem(item)
menu.AppendSeparator()
menu.Append(104, '&Schließen')
menuBar.Append(menu, '&Planeten')
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU, self.menu101, id=101)
self.Bind(wx.EVT_MENU, self.menu102, id=102)
self.Bind(wx.EVT_MENU, self.menu103, id=103)
self.Bind(wx.EVT_MENU, self.CloseWindow, id=104)
def menu101(self, event):
print 'Merkur'
def menu102(self, event):
print 'Venus'
def menu103(self, event):
print 'Erde'
def CloseWindow(self, event):
self.Close()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show()
app.MainLoop()
HWK
HWK, danke für dein Snippet dass das Problem "fixt". Ich denke auch das es ein Bug ist. Ich denke ein Bug-Report an die Programmierer zu schicken wäre nicht schlecht. (Mein Englisch ist aber zu schlecht).
lg
P.S.: *Abo*
lg
P.S.: *Abo*