2010-09-29 3 views
0

tous, je veux dessiner un rectangle ou un conteneur avec 20 emplacements à l'intérieur. c'est comme un conteneur ou une archive de cd, avec un emplacement vide pour insérer le cd ou le livre. Je choisis wxPython. pour ces 20 emplacements vides horizontaux, je vois qu'il y a wx.BoxSizer (wx.Horizonal) ou d'autres calibreurs pour faire la mise en page. Ma question est, est-il possible d'avoir "bordure visible et fond gris" (pour représenter les emplacements vides) pour les espaces générés par le wx.BoxSizer? Il me semble que ce n'est pas possible. Le calibreur semble seulement faire la mise en page, au lieu de générer sous-fenêtre visible. Si ce n'est pas possible, je pense que j'ai besoin de créer une classe de fenêtre de fente pour cette fonctionnalité "frontière et arrière-plan coloré", et créer 20 objets fenêtre de fente et ajouter dans le calibreur. Ensuite, je dois utiliser créer une autre classe de fenêtre pour représenter le livre ou le CD, et insérer cette fenêtre de CD dans la fenêtre de l'emplacement.utiliser wxPython pour dessiner un conteneur ou une boîte rectangulaire grillé

Cela semble un peu mal à l'aise. Je ne sais pas si la fenêtre de fente est nécessaire ou peut-être wx.sizer (ou autre calibreur) pourrait réaliser le même effet que la fenêtre de fente.

+0

"Le calibreur ne semble faire que la mise en page, au lieu de générer une sous-fenêtre visible." -- C'est vrai. Un calibreur est invisible. –

Répondre

1

Je créerais une sous-classe de wx.Panel pour chaque "slot", puis les gérerais avec un calibreur de grille ou de boîte.

+0

Donc vous voulez dire, pour construire ce genre de gui, nous ne pouvons pas utiliser cette "fenêtre de fente" (que vous avez suggéré de dériver de wx.Panel). Ai-je raison? – pepero

+0

Vous pouvez l'éviter, mais pour afficher une bordure, vous avez besoin d'un widget, et les indicateurs ne sont pas des widgets, donc ils n'ont pas de bordures. Cependant, si vous avez un widget qui représente un livre ou un CD, faites en sorte que ce widget dessine une bordure, auquel cas il n'a pas besoin de vivre dans un panneau. –

+0

Je vois. Merci Bryan, je ne connaissais pas le fait que "sizer n'est pas un widget". J'ai besoin de la bordure visible du slot, car l'utilisateur a besoin de savoir quel slot insérer. Sans bordure, il s'agirait d'un espace omniprésent et l'utilisateur ne peut pas savoir où insérer. Ce n'est pas acceptable pour mon cas. Alors, est-il possible d'insérer/attacher plus loin l'objet fenêtre ou peut-être changer la couleur d'arrière-plan (pour montrer qu'un cd est inséré) avec cette fenêtre wx.Panel dérivée? Merci beaucoup pour votre conseil. – pepero

Questions connexes