如何动态缩小或增加面板内容?

问题描述:

我有一个问题,使我的程序面板适合低分辨率。就好像我的分辨率是800 x 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变小时我该怎么做?

谢谢。

您可以使用一些启发式选择您的字体大小,具体取决于框架大小,或者您可以使用GetTextExtent()来计算字符串的长度,并查找它将与您想要的字体大小相等的字体大小。

要在调整帧大小时动态地执行此操作,您需要捕获wxEVT_SIZE并更改其处理程序中的字体。

+0

感谢您的回答,但仅以静态文本为例。在我的实际程序中,我有各种各样的小部件......所以我很难想象如何随时调整所有这些。 – Erik343

+0

像这样改变控件的字体是非常不寻常的。通常情况下,您使用sizer作为布局,但sizer会更改窗口的大小,例如您的文本控件可能会显示更多文本。他们从不改变字体的大小。 –

+0

P.S.而通过“不同寻常的”,我的意思是“闻所未闻”。 –