GetPosition() 不适用于 wxPython

GetPosition() not working with wxPython

我是 Python(以及一般编程)的新手,如果这是一个愚蠢的问题,请原谅我。

我正在学习一本书中关于在 Python 中创建 GUI 的教程。现在我正在学习如何使旋转控件增加一些静态文本。当我 运行 它时,旋转控件出现但控制台显示“value = event.GetPosition() AttributeError: 'CommandEvent' 对象没有属性 'GetPosition'"

密码是:

import wx

class Frame(wx.Frame):
    def __init__(self, title):
        wx.Frame.__init__(self, None,\
          title=title, size=(300,250))
        panel = wx.Panel(self)

        sc = wx.SpinCtrl(panel, value='0', pos=(130, 50), size=(70, 25))
        self.valueText = wx.StaticText(panel, label='', pos=(130,80))

        sc.Bind(wx.EVT_SPINCTRL, self.spinControl)

    def spinControl(self, event):
        # Get spin control value
        value = event.GetPosition()
        # Update static text
        self.valueText.SetLabel(str(value))

app = wx.App()
frame = Frame("wxPython Widgets!")
frame.Show()
app.MainLoop()

该代码实际上是 copy/pasted 来自本书的网站。我已经安装了 wxPython,到那时为止一切正常。

哈尔普!

如果您将带有 GetPosition() 的行更改为

value = event.GetEventObject().GetValue()

它会起作用的。该事件只是没有 GetPosition 属性,因此无法执行。

如果要查看哪些功能和属性可用,可以使用

print(dir(event))

这将向您展示活动中可用的所有内容。

迈克尔

我在第 2 天 Python 读完了同一本书。我相信内容已经过时了。

If you change the line with GetPosition() to

value = event.GetEventObject().GetValue()

正确。我可以确认它适用于 Python 2.7.11.

耶利米