Zu kleines Notebook (--Nachtrag--)
Verfasst: Samstag 8. Juli 2006, 01:15
Da TkInter nicht genügend Funktionsumfang bietet möchte ich jetzt auf wxPython umsteigen. In einem ersten kleinen Programm tauchen aber bereits Probleme auf, die ich nicht zuletzt durch die schlechte Dokumentation nicht allein lösen kann.
Als erstes mein etwas gekürztes Programm:
Das Notebook ist zu flach und unnötig breit. Ich kann die Größe aber auch nicht manuell mit size=(w, h) verändern. Was ist hier falsch?
Weiterhin möchte ich den Eingabecursor auf ein TextCtrl-Widget, z.B. self.hba1c setzen. SetFocus funktioniert aber nicht. Was muß ich anders machen?
Danke im voraus
HWK
Als erstes mein etwas gekürztes Programm:
Code: Alles auswählen
#!/usr/local/bin/python
# -*- coding: cp1252 -*-
# File: MedForm.py
import wx
class my_notebook(wx.Notebook):
def __init__(self, parent):
wx.Notebook.__init__(self, parent, -1)
panel = wx.Panel(self, -1)
sizer = wx.BoxSizer(wx.VERTICAL)
box = wx.BoxSizer(wx.HORIZONTAL)
label = wx.StaticText(panel, -1, 'Text')
box.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
self.hba1c = wx.TextCtrl(panel, -1, '', size=(80, -1))
self.hba1c.SetFocus()
box.Add(self.hba1c, 1, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(box, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
self.mbz = wx.StaticText(panel, -1, 'Text')
sizer.Add(self.mbz, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 10)
line = wx.StaticLine(panel, -1, size=(20, -1), style=wx.LI_HORIZONTAL)
sizer.Add(line, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
btn = wx.Button(panel, -1, 'Text')
btn.SetDefault()
self.Bind(wx.EVT_BUTTON, self.on_mbz_click, btn)
sizer.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Fit(panel)
panel.SetSizer(sizer)
self.AddPage(panel, 'Text')
#------------------------------------------------------------------------------
panel = wx.Panel(self, -1)
sizer = wx.BoxSizer(wx.VERTICAL)
grid = wx.FlexGridSizer(3, 2)
label = wx.StaticText(panel, -1, 'Text')
grid.Add(label, 0, wx.ALIGN_LEFT|wx.ALL, 5)
self.alter = wx.TextCtrl(panel, -1, '', size=(80, -1))
grid.Add(self.alter, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
label = wx.StaticText(panel, -1, 'Text')
grid.Add(label, 0, wx.ALIGN_LEFT|wx.ALL, 5)
self.gewicht = wx.TextCtrl(panel, -1, '', size=(80, -1))
grid.Add(self.gewicht, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
label = wx.StaticText(panel, -1, 'Text')
grid.Add(label, 0, wx.ALIGN_LEFT|wx.ALL, 5)
self.krea = wx.TextCtrl(panel, -1, '', size=(80, -1))
grid.Add(self.krea, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Add(grid, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
box_title = wx.StaticBox(panel, -1, 'Text')
stat_box = wx.StaticBoxSizer(box_title, wx.HORIZONTAL)
self.mann = wx.RadioButton(panel, -1, 'Text', style = wx.RB_GROUP)
stat_box.Add(self.mann, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
self.Bind(wx.EVT_RADIOBUTTON, self.on_select, self.mann)
self.mann.SetValue(1)
self.geschlecht = 1
self.frau = wx.RadioButton(panel, -1, 'Text')
stat_box.Add(self.frau, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
self.Bind(wx.EVT_RADIOBUTTON, self.on_select, self.frau)
self.frau.SetValue(0)
sizer.Add(stat_box, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
self.gfr = wx.StaticText(panel, -1, 'Text')
sizer.Add(self.gfr, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 10)
line = wx.StaticLine(panel, -1, size=(20, -1), style=wx.LI_HORIZONTAL)
sizer.Add(line, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5)
btn = wx.Button(panel, -1, 'Text')
btn.SetDefault()
self.Bind(wx.EVT_BUTTON, self.on_gfr_click, btn)
sizer.Add(btn, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
sizer.Fit(panel)
panel.SetSizer(sizer)
self.AddPage(panel, 'Text')
def on_mbz_click(self, event):
pass
def on_select(self, event):
pass
def on_gfr_click(self, event):
pass
class MyApp(wx.App):
def OnInit(self):
frame = wx.Frame(None, -1, 'Titel')
nb = my_notebook(frame)
self.SetTopWindow(frame)
frame.Show(True)
return True
app = MyApp()
app.MainLoop()
Weiterhin möchte ich den Eingabecursor auf ein TextCtrl-Widget, z.B. self.hba1c setzen. SetFocus funktioniert aber nicht. Was muß ich anders machen?
Danke im voraus
HWK