2017-06-07 21 views
1

我有一個問題,使我的程序面板適合低分辨率。就好像我的分辨率是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變小時我該怎麼做?

謝謝。

回答

1

您可以使用一些啓發式選擇您的字體大小,具體取決於框架大小,或者您可以使用GetTextExtent()來計算字符串的長度,並查找它將與您想要的字體大小相等的字體大小。

要在調整幀大小時動態地執行此操作,您需要捕獲wxEVT_SIZE並更改其處理程序中的字體。

+0

感謝您的回答,但僅以靜態文本爲例。在我的實際程序中,我有各種各樣的小部件......所以我很難想象如何隨時調整所有這些。 – Erik343

+0

像這樣改變控件的字體是非常不尋常的。通常情況下,您使用sizer作爲佈局,但sizer會更改窗口的大小,例如您的文本控件可能會顯示更多文本。他們從不改變字體的大小。 –

+0

P.S.而通過「不同尋常的」,我的意思是「聞所未聞」。 –