我有一個我在wxPython中開發的應用程序。部分應用程序在網格中創建大量TextCtrls,以便爲任意大的人員列表輸入一週中每天的四個字母代碼。在wxPython中查找文本大小的正確方法
我已經設法使它工作,但我不得不做一些事情。具體來說,我還沒有找到一個很好的方法來找出有多大(以像素爲單位)一些文本,所以我不得不猜測調整TextCtrls的大小以適合最大的(4個字母)代碼。我擔心的是,如果文本的大小發生變化,或者應用程序被移植到MSW以外的其他地方,那麼我的佈局可能會中斷。
我找到的解決方案是創建一個StaticText對象,用4個大號填充它,得到它的大小,然後.Destroy()它。這工作,但它確實像一個klunky解決方案。有沒有人有更直接的方法來確定在TextCtrl中有多大的任意文本字符串?我查看了文檔,一直沒能找到任何東西,而且我還沒有看到任何正在做我想做的事情的例子。
小代碼示例(示出了試驗方法)如下:
# This creates and then immediately destroys a static text control
# in order to learn how big four characters are in the current font.
testst = wx.StaticText(self, id = wx.ID_ANY, label = "XXXX")
self.fourlettertextsize = testst.GetClientSize() + (4,4)
testst.Destroy()
(該+(4,4)的部分是在所述控制加少許更多的空間以容納和光標一點邊界在TextCtrl的客戶區;這是我不想直接做的另一件事。)
如果這個「klunky」解決方案起作用,那麼wx會錯誤地計算文本度量(或者你根本沒有以一種好的方式進行測試)。我可以用一個不同的字母創建一個更高的文本。根據使用的字體,我可以用不同的字母創建更寬的文本。 – mmgp