Je tente d'organiser certains panneaux dans wxPython. Essentiellement, je cherche un panneau gauche et droit, tel que - quand redimensionné - le panneau gauche (orange) (et son contenu) n'est jamais redimensionné, et le le panneau droit (bleu) peut s'étirer ou se développer autant que nécessaire, mais seulement horizontalement.Empêcher la croissance des panneaux dans wxPython
Le code que j'ai jusqu'ici (avec quelques widgets de remplissage aléatoire) est ci-dessous. Mes questions suivent le code:
import wx
import wx.lib.scrolledpanel as scrolled
class MainWindow(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent)
#add position panel
posPnl = IdPanel(self)
lbl1 = wx.StaticText(posPnl, label="Position")
lbl2 = wx.StaticText(posPnl, label="Size")
sizeCtrl = wx.TextCtrl(posPnl)
posPnlSzr = wx.BoxSizer(wx.VERTICAL)
posPnlSzr.Add(lbl1, 1, wx.FIXED&wx.LEFT)
posPnlSzr.Add(sizeCtrl, 1, wx.LEFT&wx.FIXED)
posPnlSzr.Add(lbl2, 1, wx.FIXED&wx.LEFT)
posPnl.SetSizer(posPnlSzr)
posPnl2 = TimelinePanel(self)
lbl12 = wx.StaticText(posPnl2, label="Position")
lbl22 = wx.StaticText(posPnl2, label="Size")
sizeCtrl2 = wx.TextCtrl(posPnl2)
posPnlSzr2 = wx.BoxSizer(wx.VERTICAL)
posPnlSzr2.Add(lbl12, 1, wx.GROW)
posPnlSzr2.Add(sizeCtrl2, 1, wx.GROW)
posPnlSzr2.Add(lbl22, 1, wx.GROW)
posPnl2.SetSizer(posPnlSzr2)
mainSzr = wx.BoxSizer(wx.HORIZONTAL)
mainSzr.Add(posPnl, 1, wx.FIXED)
#mainSzr.AddSpacer(10)
mainSzr.Add(posPnl2, 1, wx.GROW)
self.SetSizerAndFit(mainSzr)
self.Show()
class IdPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1, size = (400, 200))
self.SetBackgroundColour((255, 0, 255))
class TimelinePanel(scrolled.ScrolledPanel):
def __init__(self, parent):
scrolled.ScrolledPanel.__init__(self, parent, -1, size = (300, 200))
self.SetBackgroundColour((255, 0, 0))
app = wx.App(False)
frame = MainWindow(None, "Trading Client")
app.MainLoop()
Mes questions:
- Comment puis-je utiliser calibreurs pour assurer que le panneau de droite se développe, et seulement horizontalement? Actuellement, le contenu du panneau de gauche reste fixe, mais le panneau lui-même se développe encore.
- Si je voulais modifier légèrement la première question afin que seule la droite se déploie horizontalement, mais que les deux panneaux se déploient verticalement, que devrais-je faire?
- J'utilise un wx.lib.scrolledpanel pour l'axe des x pour le panneau droit, mais je n'arrive pas à contracter la fenêtre horizontalement pour la faire apparaître. Je ne suis pas sûr s'il y a un paramètre sur la taille de panneau de mélange/maximum, etc., qui peut aider ceci?
Excellentes réponses - merci beaucoup! Votre explication des drapeaux/proportions pour la croissance m'a aidé à mieux comprendre wxPython. –
Je suis d'accord avec allie, vous ne trouvez pas ce genre d'explications dans les docs. – alwbtc