komisches Problem, ich finde einfach keine Lösung:
[update]: Lösung unten kommentiert eingefügt ( '# FIX')!
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx
class dlgStartTimer(wx.Dialog):
'''Show a dialog box to start the timer'''
def __init__(self, parent):
wx.Dialog.__init__( self, parent, 100, 'aktion starten', size=(250, 190))
panel = wx.Panel(self, -1)
vbox = wx.BoxSizer(wx.VERTICAL)
label = wx.StaticText(panel, -1,
'Waehle eine Aktion\noder gib eine neue ein'
)
line = wx.StaticText(panel, -1,
'--------------------'
)
vbox.Add((-1, 10))
vbox.Add(label, 0)
vbox.Add((-1, 10))
self.comboBox = wx.ComboBox(panel, -1, value='Combobox', choices=[
'eins','zwei','drei'], style= wx.CB_SORT | wx.CB_DROPDOWN )
self.comboBox.SetSelection(0)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
hbox1.Add(self.comboBox, 0, wx.ALL, 1)
vbox.Add(hbox1, 0)
vbox.Add((-1, 10))
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
okButton = wx.Button(self, -1, 'Ok', size=(50, 25))
# FIX ----------------------^^^ hier muss panel stehen statt self
okButton.Bind(wx.EVT_BUTTON, self.OnOk)
okButton.SetDefault()
closeButton = wx.Button(self, -1, 'Abbrechen', size=(50, 25))
# FIX ------------------------------------^^^ hier auch
closeButton.Bind(wx.EVT_BUTTON, self.OnExit)
hbox2.Add(okButton, 1, wx.ALL, 1)
hbox2.Add(closeButton, 1, wx.ALL, 1)
#hbox2.Add(line, 0, wx.ALL, 1)
vbox.Add(hbox2, 0, wx.EXPAND | wx.ALL, 1)
# ------^^^^^ trotzdem wird hbox2 (bei mir) nicht dargestellt, bzw. die Buttons sind nicht zu sehen
vbox.Add((-1, 10))
vbox.Add(line, 0)
# ------^^^^^ diese Linie kann ich aber wieder sehen...
panel.SetSizer(vbox)
#panel.Layout()
panel.Fit()
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
self.comboBox.SetFocus()
def OnExit(self, event):
self.action = 'closed'
self.Close()
def OnOk(self, event):
self.action = 'ok'
self.Close()
def OnKeyDown(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
self.Close()
event.Skip()
myApp = wx.PySimpleApp(0)
myFrame = dlgStartTimer(None)
myFrame.ShowModal()
myFrame.Destroy()
myApp.SetTopWindow(myFrame)
myFrame.Show()
myApp.MainLoop()
Vielen Dank,
Sven