wxPython,设置StaticText()的值

时间:2008-11-16 01:52:15

标签: python wxpython

我正在使用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新手:)

干杯

2 个答案:

答案 0 :(得分:59)

如果您使用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子类化。 wxWyts在wxPython中有一些不同的东西,找出它们的含义可能很有挑战性。幸运的是,很多时候,差异是已添加到wxPython的便捷函数,而在wxWidgets中找不到。

答案 1 :(得分:23)

wx.TextCtrl有一种称为wx.TE_READONLY的样式。用它来使它成为只读。

作为sidenode,您可以将C++ wxWidgets Manual用于wxPython。如果需要对wxPython或其他端口进行特殊处理,手册通常会指出差异。