Hallo,
Gibt es unter WxPython eine Möglichkeit ein Fenster um einen bestimmten Prozentsatz zu vergrössern oder zu verkleinern!
Fenstergrösse
Hallo HarryH
Ich denke, dass es mit SetSize() am einfachsten geht. Im folgenden Beispiel wird ein Fenster jeweil um 20% vergrössert oder verkleinert bei entsprechender Buttonbetätigung. Dabei ist die Ausgangsgröße die kleinste Größe die so zu erreichen ist.
Ich denke, dass es mit SetSize() am einfachsten geht. Im folgenden Beispiel wird ein Fenster jeweil um 20% vergrössert oder verkleinert bei entsprechender Buttonbetätigung. Dabei ist die Ausgangsgröße die kleinste Größe die so zu erreichen ist.
Code: Alles auswählen
from wxPython.wx import *
class MyFrame(wxFrame):
def __init__(self, *args, **kwds):
kwds["style"] = wxDEFAULT_FRAME_STYLE
wxFrame.__init__(self, *args, **kwds)
self.button_g = wxButton(self, wxNewId(), "verbroessern")
self.button_k = wxButton(self, wxNewId(), "verkleinern")
EVT_BUTTON( self, self.button_g.GetId(), self.OnButtonGroesser)
EVT_BUTTON( self, self.button_k.GetId(), self.OnButtonKleiner)
sizer_1 = wxBoxSizer(wxVERTICAL)
sizer_1.Add(self.button_g, 0, wxEXPAND, 0)
sizer_1.Add(self.button_k, 0, wxEXPAND, 0)
self.SetAutoLayout(1)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
sizer_1.SetSizeHints(self)
self.Layout()
def OnButtonGroesser( self, event ):
bound = self.GetRect()
bound.SetHeight( int(bound.GetHeight() * 1.2) )
bound.SetWidth( int(bound.GetWidth() * 1.2) )
self.SetSize( bound.GetSize() )
def OnButtonKleiner( self, event ):
bound = self.GetRect()
bound.SetHeight( int(bound.GetHeight() * 0.8) )
bound.SetWidth( int(bound.GetWidth() * 0.8) )
self.SetSize( bound.GetSize() )
Hallo Christopy,
Ja, so ähnlich habe ich das bei meinem Programm auch gemacht.
Ich habe jede definierte Grösse eines jeden Widget meines Programmes mit einem einstellbaren Wert, den ich in einer Variable gespeichert habe, multipliziert.
Das ist aber ziemlich aufwendig, besonders bei vielen Widgets oder wenn man andere Klassen impotiert.
Aber vielleicht gibt es eine Möglichkeit, alle zu einem Programm gehörigen Komponenten um einen bestimmten Faktor zu vergrößern oder zu verkleinern. An so etwas hätte ich gedacht.
Ja, so ähnlich habe ich das bei meinem Programm auch gemacht.
Ich habe jede definierte Grösse eines jeden Widget meines Programmes mit einem einstellbaren Wert, den ich in einer Variable gespeichert habe, multipliziert.
Das ist aber ziemlich aufwendig, besonders bei vielen Widgets oder wenn man andere Klassen impotiert.
Aber vielleicht gibt es eine Möglichkeit, alle zu einem Programm gehörigen Komponenten um einen bestimmten Faktor zu vergrößern oder zu verkleinern. An so etwas hätte ich gedacht.
Gruß, Harry
Hallo HarryH
verstehe. Für alle Komponenten ist das tatsächlich ein wenig aufwendig
Vielleicht ist es dann am einfachsten die Arbeit dem Sizer zu überlassen. Um beim obigen Beispielcode zu bleiben, könnte man nach jedem SetSize() noch ein self.Layout() anfügen, dann werden die Buttons wieder neu angepasst.
verstehe. Für alle Komponenten ist das tatsächlich ein wenig aufwendig
Vielleicht ist es dann am einfachsten die Arbeit dem Sizer zu überlassen. Um beim obigen Beispielcode zu bleiben, könnte man nach jedem SetSize() noch ein self.Layout() anfügen, dann werden die Buttons wieder neu angepasst.