28

現在、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が初めてです:)

乾杯

4

2 に答える 2

63

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 ドキュメントの名前空間階層を上に移動して、wx.StaticText がサブクラス化されたwxWindow スーパークラスに移動する必要があります。wxPython には wxWidgets と異なる点がいくつかあり、それらが何であるかを見つけるのは難しい場合があります。幸いなことに、多くの場合、違いは wxPython に追加された便利な関数であり、wxWidgets にはありません。

于 2008-11-16T16:55:03.190 に答える
24

wx.TextCtrlと呼ばれるスタイルがありwx.TE_READONLYます。それを使用して読み取り専用にします。

サイドノードとして、 wxPython用のC++ wxWidgets マニュアルも使用できます。wxPython やその他のポートの特別な処理が必要な場合は、マニュアルで違いが指摘されることがよくあります。

于 2008-11-16T02:00:54.073 に答える