很簡單的問題:wxPython的textctrl自動調整大小以適應文本
Ive得到了一個wxPython的textctrl盒子,我要顯示一個長文本。文本可能包含換行符。不得。
無論我做什麼,這個盒子似乎總是有點短。
香港專業教育學院去獲取字體大小,並試圖計算出所需的高度的程度,數學似乎工作,但框太短...寬度是好的,什麼我期待
樣本的代碼在這裏:
Message = 'really long text....just an example here............................................................................................................................'
self.MessageBoxText = wx.TextCtrl(self, wx.ID_ANY, Message, wx.DefaultPosition, wx.DefaultSize, wx.TE_RICH|wx.TE_MULTILINE|wx.TE_BESTWRAP)
self.MessageText.SetFont(wx.Font(18, 74, 90, 90, False, 'Arial'))
dc = wx.WindowDC(self.panel)
textWidthSingle, textHeightSingle = dc.GetTextExtent(self.MessageBoxText.GetValue())
textWidth, textHeight,other =
dc.GetMultiLineTextExtent(self.MessageText.GetValue(),self.MessageText.GetFont())
self.msgBoxWidth = 800 #pixels
rows = textWidth/self.msgBoxWidth
self.msgBoxHeight = (textHeightSingle * rows) + 20
self.MessageBoxText.SetMinSize((self.msgBoxWidth,self.msgBoxHeight))
self.msgSizer.Add(self.MessageBoxText, 1, wx.ALL|wx.EXPAND, 0)
self.topSizer.Add(self.msgSizer, 1, wx.ALL|wx.EXPAND , 10)
self.SetSizer(self.topSizer)
self.Fit()
self.Center()
滾動條確實讓我看到整個文本,但我希望只是調整textctrl看到的一切,而不滾動條,如果只需要滾動條的過大,以適應屏幕。
setMinSize似乎沒有工作,因爲我可以查詢self.messageBoxText.GetSize(),它最終比我設置使用SetMinSize更短。
我也可能在topSizer中有一個列表框和位圖,但這是我能想到的最基本的例子。
它必須是簡單的東西。關於如何獲得我想要的任何想法?
感謝
我按照我想要的方式工作,將textctrl值留空,將其添加到我的sizer,裝配所有內容,然後設置textctrl的值並重新進行修改。這樣做可以讓我刪除相當多的「強制」大小,只是讓sizer完成他們的工作。它的時髦不得不適合兩次,但它看起來完美超過了我的測試牀上30位以上的位圖,textctrls,listboxes,comboboxes的組合。未來可能會幫助別人。但我肯定會看看expando!感謝羅賓! – pyNewbie