Je ne peux pas comprendre ce que je fais mal. J'ai juste fait le saut de Tkinter à wxPython et j'essaye de comprendre BoxSizers. Je poserais cette question, mais je ne sais même pas quoi chercher. Ce panneau remplit l'espace d'un cadre, il est censé montrer une ligne de texte avec une barre de progression en dessous et tout cela est supposé prendre le 1/5 inférieur du panneau ou plus, centré horizontalement (finalement je vais ajouter une image de fond derrière). Mais ce qui se passe, c'est que je ne vois que le texte et seulement environ 40% du haut, aligné sur le bord gauche de la fenêtre. Voici le code:wxPython - BoxSizers ne pas placer les choses correctement
class KhPanel(wx.Panel):
def __init__(self, parent, configSet, selectWindow):
wx.Panel.__init__(self, parent=parent)
self.frame = parent
self.configSet = configSet
whichWindow = getattr(self, selectWindow)
whichWindow()
def configWindow(self):
gaugeWidth = (1/5)*self.configSet["width"]
gaugeHeight = (1/10)*self.configSet["height"]
gaugeMax = 100
topBuffer = (8/10)*self.configSet["height"]
itemSep = (1/16)*self.configSet["height"]
vSizer = wx.BoxSizer(wx.VERTICAL)
textSizer = wx.BoxSizer(wx.HORIZONTAL)
progressSizer = wx.BoxSizer(wx.HORIZONTAL)
configText = wx.StaticText(self, label="STUFF", style=wx.ALIGN_CENTER)
configProgressBar = wx.Gauge(self, range=gaugeMax, size=(gaugeWidth, gaugeHeight))
textSizer.Add(configText, 1, wx.ALIGN_CENTER, 0)
progressSizer.Add(configProgressBar, 1, wx.ALIGN_CENTER, 1)
vSizer.Add(textSizer, 1, wx.TOP, topBuffer)
vSizer.Add(progressSizer, 1, wx.TOP, itemSep)
self.SetSizer(vSizer)
vSizer.Fit(self)
return
Si vous avez besoin d'informations, configSet.width et la hauteur sont la largeur et la hauteur de la fenêtre mère (actuellement 340 x 270). Et selectWindow, dans ce cas, est « configWindow »
Vous avez raison, c'était le problème. J'ai fait la même chose pour le topBuffer et itemSep et maintenant ceux-ci fonctionnent, même si j'ai encore quelques ajustements comme la barre de progression se termine en haut et je ne sais pas pourquoi et les widgets ne sont pas centrés horizontalement, ce que je pensais ALIGN_CENTER a fait. Ahh eh bien, je peux en discuter avec ceux-là. Pourquoi Python a-t-il besoin du .0 à la fin des entiers comme ça? Est-ce que le .0 dit que la réponse sera un point flottant? Règle n ° 1 du débogage: testez vos variables - leçon apprise pour la 500ème fois. Merci! – linus72982
Oui, il dit à Python d'utiliser la division en virgule flottante. Vous pouvez activer la division en virgule flottante par défaut en utilisant 'from __future__ import division' - http://stackoverflow.com/questions/1267869/how-can-i-force-division-to-be-floating-point-in-python . Vous pourriez trouver cet article utile pour centrer les widgets - http://www.blog.pythonlibrary.org/2015/02/19/wxpython-101-how-to-center-a-widget/ –