Question

Je fais ma première incursion dans la programmation GUI, et je suis en train de se familiariser avec wxPython. Je suis en train d'utiliser wxGlade, mais il tourne être un peu bogué.

Je fais une mise en page en utilisant GridSizer.

J'ai travaillé que chaque fois que vous ajoutez quelque chose à sizer, il est mis dans la cellule suivante. Cela signifie que si vous avez une cellule vide, vous devez le remplir avec quelque chose. Ai-je raison?

Ceci est la mise en page que je vais pour (capture d'écran wxGlade):

capture d'écran de mise en page wxGlade

Le problème est, la génération de code à partir que je reçois ceci:

entrer image description ici

    grid_sizer_1 = wx.GridSizer(3, 3, 0, 0)
    grid_sizer_1.Add(self.button_last_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_up, 0, wx.ALIGN_BOTTOM|wx.ALIGN_CENTER_HORIZONTAL, 0)
    grid_sizer_1.Add(self.button_next_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_left, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_select, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_right, 0, wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_down, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)

parce que le bouton apparemment « Down » est de se mettre dans la cellule 7 au lieu du 8.

Quelle est la manière standard de faire face? Voulez-vous mettre une sorte de widget de mannequin pour remplir la cellule vide? Si oui widget qui? Ou suis-je utiliser le mauvais type de calibreur?

Merci!

Était-ce utile?

La solution

As you said... adding a dummy widget (blank static text) works well. You can also use AddMany() instead of multiple add()'s.

grid_sizer_1 = wx.GridSizer(3, 3, 0, 0)
grid_sizer_1.AddMany( [
  (self.button_last_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL),
  (self.button_up, 0, wx.ALIGN_BOTTOM|wx.ALIGN_CENTER_HORIZONTAL),
  (self.button_next_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL),
  (self.button_left, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL),
  (self.button_select, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL),
  (self.button_right, 0, wx.ALIGN_CENTER_VERTICAL),
  (wx.StaticText(self, -1, ''), 0, wx.EXPAND),
  (self.button_down, 0, wx.ALIGN_CENTER_HORIZONTAL) ] )

Autres conseils

I am more familiar with using (0,0) which means add stretchable size to the sizer. So, one would create a single object like empty_cell = (0,0) and then stick in empty_cell everywhere that empty space is needed in your sizer (where for example the wx.StaticText is used in the accepted answer).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top