Bonjour
Alors voila, dernièrement, j'ai eu l'idée tordue de créer une petite interface qui gère un système plus complexe pour Poser (smith micro).
L'idée est simple: un panneau s'ouvre, d'un coté, des sliders prépositionnés, de l'autre une image qui pivote suivant les informations extraites du système de base.
Je suis un noob complet, mais j'ai réussi!
Le problème, c'est que le code a une sale gueule, il est lent et bourré de truc gênent:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 class qui_gere_l_image(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, -1, size=(256, 256), pos=(400, 150)) self.SetBackgroundColour(wx.Colour(74,74,74)) bitmap=wx.Bitmap(os.path.join(os.path.dirname(poser.ScriptLocation()), "imagequitourne.png")) img = bitmap.ConvertToImage() img_centre = wx.Point( img.GetWidth()/2, img.GetHeight()/2 ) imgr = img.Rotate( valeurextraite, img_centre ) imgr_center = (wx.Point( (128 - imgr.GetWidth()/2), (128 - imgr.GetHeight()/2) )) im = imgr.ConvertToBitmap() self.Refresh() bmp = wx.StaticBitmap(self, bitmap=im) bmp = bmp.SetPosition((imgr_center)) class MainWindow(wx.Dialog): def __init__(self, parent): wx.Dialog.__init__(self, parent, -1, titre, size=(800, 600), style=wx.DEFAULT_DIALOG_STYLE) panel = wx.Panel(self, -1, size=(128, 128), pos=(400, 150)) bitmap=wx.Bitmap(os.path.join(os.path.dirname(poser.ScriptLocation()), "Font.jpg")) sizer = wx.BoxSizer(wx.VERTICAL) panel.SetSizer(sizer) sizer1 = wx.BoxSizer(wx.HORIZONTAL) self.aire = qui_gere_l_image(panel) sizer.Add(self.aire) self.SetBackgroundColour(wx.Colour(74,74,74)) panel.Fit()
C'est moche, non?
L'idée de bas est simple:
J'ouvre une fenêtre avec wx.Dialog, en parallèle, je gère une image avec wx.Panel, et j'ajoute le résultat dans le cadre principal!
La, c'est la théorie,, 2 problèmes viennent se superposer:
-Dans le système de gestion de l'image, je suis oblige d'extraire 2 fois le centre, sinon l'image pivote subit des translations (a causes des bord) dans son cadre!
-Dans la fenêtre principal, je suis oblige de de créer un panel dans lequel j’enserre le......panel qui gère l'image!
Le résultat, c'est un code qui est lent, lourd, redondant et qui est, je trouve, particulièrement moche!
Savez vous comment:
-faire une rotation sans que le bords du cadre ne fassent partir l'image en sucette?
-Insérer l'image dans la fenêtre principal sans que celle ci ne demande un stupide "panel" supplémentaire!
Autre problèmes:
-je ne peut pas insérer d'image de fond sans que les sliders deviennent inaccessible.
-mon image tournant utilise un canal Alpha, mais je n'est pas encore inséré la commande pour l'utiliser, j'ai peur des performances.
A l'origine, je voulais que se soit l'image qui servent de commande, mais je suis limité par Poser à PIL et WXimage, je ne dis pas de bêtises en pensant que c'est impossible avec ses trucs?
Merci de votre attentions, et encore pardon, je débute en python GUI.![]()
Partager