2017-06-07 2 views
1

J'ai un problème avec l'ajustement de mon panneau de programme en basse résolution. Comme si j'avais une résolution de 800 x 600, et que mon panel est plus grand que ça, tout est coupé, surtout les boutons qui sont en bas de l'écran.Comment réduire ou augmenter dynamiquement le contenu d'un panneau?

Alors, je fait un programme maquette comme exemple: « Bonjour! Monde »

import wx 

MAIN_FRAME_SIZE = (190, 150) 

class MainFrame(wx.Frame): 

    def __init__(self): 

     wx.Frame.__init__(self, None, id = -1, title = 'Hello, World!', size = MAIN_FRAME_SIZE) 

     vertBox = wx.BoxSizer(wx.VERTICAL) 

     staticText = wx.StaticText(self, label = 'Hello, World!') 

     vertBox.Add(staticText, 0, wx.ALL, 40) 

     self.SetSizer(vertBox)  

if __name__ == '__main__': 
    app = wx.App() 
    frame = MainFrame() 
    frame.Show(True) 
    app.MainLoop() 

Alors, ma question est de savoir comment puis-je faire la texte plus grand lorsque le MainFrame est plus grand, et comment faire la même chose quand le MainFrame devient plus petit?

Merci.

Répondre

1

Vous pouvez sélectionner votre taille de police en fonction de la taille du cadre en utilisant des heuristiques ou vous pouvez calculer la longueur de votre chaîne en utilisant GetTextExtent() et trouver la taille de police pour laquelle il sera égal à ce que vous voulez. Pour ce faire dynamiquement lorsque le cadre est redimensionné, vous devez attraper wxEVT_SIZE et modifier la police dans son gestionnaire.

+0

Merci pour la réponse, mais le texte statique a juste été utilisé comme exemple. Dans mon programme actuel, j'ai tous les types et tous les types de widgets ... donc il me semble difficile d'imaginer comment les redimensionner à la volée. – Erik343

+0

Il est très inhabituel de changer la police des commandes à la volée comme ça. Généralement, vous utilisez des calibreurs pour la mise en page, mais les calibreurs changent la taille de la fenêtre, de sorte que par exemple. votre contrôle de texte pourrait montrer plus de texte. Ils ne changent jamais la taille de la police. –

+0

P.S. Et par "inhabituel", je veux dire vraiment "inouï". –