-1

手を貸していただける方へ。

wx.STC.StyledTextCtrlを使用するPythonでBoaConstructorを使用してアプリを構築しています。この styledtextctrl では、Scapy の hexdump 関数を使用して 16 進数データを出力しています。行番号、16 進数のダンプ、および文字トランスコードが追加されます。残念ながら、StyledTextCtrl でこのテキストをフォーマットして、通常の 16 進エディタのように表示する方法がわかりません (ここの画像を参照してくださいhttp://imgur.com/a/tqE02 )。ありがとう!

4

1 に答える 1

0

あなたは出力が他のエディターで問題ないように見えると言ったので、問題はフォントが可変ピクセル幅の文字を使用していることだと推測しています (たとえば、「w」のような幅の広い文字が幅 15 ピクセルの場合、「i」のような細い文字の場合) 10 ピクセルのみの場合もあります)。固定幅フォント (等幅フォントまたはタイプライター テキスト フォントと呼ばれることもあります) では、すべての文字の幅がまったく同じです。

これはスクリーン ショットで確認できます。2 行目の ".(." 部分の直前にわずかに余分なインデントがあります。スペース文字は数字よりもはるかに細いようです。そのため、これらのすべての欠落したピクセルにより、一番下の行の 3 番目の「列」が遠くに表示されます。左 (2 行目の余分な幅が少し右に押し出されます)

IsFixedWidth()が返すようなフォントを見つけて、Trueそのフォントを使用するように STC を設定する必要があります。通常、これはSetFont()メソッドを使用して設定しますが、STC は独自のメソッドを使用することを好むことを知っています。STC に固有のこのStyleSetFont()メソッドを見つけたので、おそらくそのほうがよいでしょう。

フォントの選択に関しては、 wxpythonでフォントがどのように機能するかについての優れたチュートリアルがあります。著者は実際にここでアクティブなメンバーです。特に、その記事で彼の「wx.FontEnumerator ウィジェット」の例を検索してください。固定幅フォントを見つけて表示し、気に入ったかどうかを確認できるようにする必要があります。手っ取り早い解決策として、このフォーラムの投稿wx.TELETYPEで、固定幅を保証するフラグについて説明しています。これらのコード サンプルを使用すると、その使用方法がわかります。

幸運を!

----編集----
私は STC にあまり詳しくありませんが、フォントを設定した後に呼び出す必要がある可能性のある STC に関する質問に対して行った以前の回答から覚えています。StyleClearAll()これが必要な理由の詳細については、その回答の編集セクションを参照してください。

于 2012-08-07T17:22:07.083 に答える