web-dev-qa-db-ja.com

wxPython、StaticText()の値を設定

現在、wxPythonを使用してアプリの小さなGUIフロントエンドを作成しています。

テキストを保持する場所を作成するためにwx.StaticText()を使用しています。以下のコード:

_content = wx.StaticText(panel, -1, "Text Here", style=wx.ALIGN_CENTRE)
_

クリックするとMySQLからデータを取得するボタンがあります。StaticText()の値をMySQLデータに変更するか、他に何を使用してデータを保持できますか。

以下の方法を使用してみました:

_contents = wx.TextCtrl(bkg, style=wx.TE_MULTILINE | wx.HSCROLL)
content.SetValue("New Text")
_

これによりデータが正しく表示されますが、データが読み込まれた後はデータを編集できますが、これは必要ありません。

皆さんが私がやろうとしていることを理解してくれるといいのですが、私はPython :)

乾杯

26
RailsSon

wx.TextCtrlにはwx.TE_READONLYというスタイルがあります。これを使用して、読み取り専用にします。

サイドノードとして、 C++ wxWidgets Manual をwxPythonにも使用できます。 wxPythonや他のポートの特別な処理が必要な場合、マニュアルはしばしば違いを指摘しています。

wx.StaticText() を使用している場合、次のことができます。

def __init__(self, parent, *args, **kwargs): #frame constructor, etc.
    self.some_text = wx.StaticText(panel, wx.ID_ANY, label="Awaiting MySQL Data", style=wx.ALIGN_CENTER)

def someFunction(self):
    mysql_data = databasemodel.returnData() #query your database to return a string
    self.some_text.SetLabel(mysql_data)

Litbが述べたように、wxWidgetsのドキュメントは wxPython docs よりもはるかに使いやすいことがよくあります。 SetLabel()関数がwx.StaticTextインスタンスに適用できることを確認するには、wxPythonドキュメントの名前空間階層を wxWindow superclass に移動し、そこからwx.StaticTextを取得する必要があります。サブクラス化。 wxPythonとwxWidgetsにはいくつか異なる点があり、それらが何かを見つけるのは困難な場合があります。幸い、多くの場合、違いはwxPythonに追加された便利な関数であり、wxWidgetsにはありません。

61
DrBloodmoney