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 文档更容易使用。为了看到 SetLabel() 函数可以应用于 wx.StaticText 实例,您必须向上移动 wxPython 文档中的命名空间层次结构到wxWindow 超类,从该超类 wx.StaticText 继承。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 回答