非常に簡単な質問:
長いテキストを表示したい 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 を使用して設定したよりも短くなるため、機能していないようです。
トップサイザーにもリストボックスとビットマップがあるかもしれませんが、これは私が考えることができる最も基本的な例です。
シンプルなものでなければなりません。私が欲しいものを手に入れる方法についてのアイデアはありますか?
ありがとう