Как динамически уменьшить или увеличить содержимое панели?
У меня проблема с настройкой панели программы в низком разрешении. Например, если у меня разрешение 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
и измените шрифт в его обработчике.