Как динамически уменьшить или увеличить содержимое панели?

У меня проблема с настройкой панели программы в низком разрешении. Например, если у меня разрешение 800х600, а моя панель больше, чем это, поэтому все обрезается, особенно кнопки внизу экрана.

Итак, я сделал макет программы в качестве примера:

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()

Итак, тогда мой вопрос, как мне сделать "Привет, мир!" текст больше, когда MainFrame становится больше, и как мне сделать то же самое, когда MainFrame становится меньше?

Благодарю.

1 ответ

Вы можете выбрать размер шрифта в зависимости от размера кадра, используя некоторую эвристику, или вы можете вычислить длину вашей строки, используя GetTextExtent() и найдите размер шрифта, для которого он будет равен тому, что вы хотите.

Чтобы сделать это динамически при изменении размера кадра, вам нужно поймать wxEVT_SIZE и измените шрифт в его обработчике.

Другие вопросы по тегам