Python TypeError:CommandEvent.GetString():参数过多

时间:2018-08-09 00:38:27

标签: python python-2.7 wxpython

我目前正在使用wx在python中创建UI。我试图同时使多个选项卡处于活动状态,但同时我试图使列表或int值保持活动状态,并始终显示在任何选项卡的右下角。不幸的是,我似乎遇到了障碍。当我运行下面的代码时,出现错误:

i = parent.GetString(Points.a) TypeError:CommandEvent.GetString():参数过多

老实说,我只有一年的编码实践经验,我真的不知道这个错误意味着什么。如果可能的话,有人可以向我解释一下,并给我一些解决问题的技巧吗?

谢谢。

import wx
class Points:
    c = 14
    a = [14]
    b = "{}\n" .format(a)

class MOC(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.poi = wx.StaticText(self, label=Points.b, pos=(400, 400))
        select = wx.Button(self, wx.ID_ANY, '+1', size=(90, 30))
        select.Bind(wx.EVT_BUTTON, self.add)

    def add(self, parent):
        i = parent.GetString(Points.a)
        Points.a.remove(Points.c)
        Points.c += 1
        Points.a.append(Points.c)
        self.poi.SetLabel(i)
        
class TOS(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        wx.StaticText(self, label=Points.b, pos=(400, 400))

class UIFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, size = (500,500), title = "Mind")
        p = wx.Panel(self)
        nb = wx.Notebook(p)

        page1 = MOC(nb)
        page2 = TOS(nb)
        nb.AddPage(page1, "Means")
        nb.AddPage(page2, "Types")

        sizer = wx.BoxSizer()
        sizer.Add(nb, 1, wx.EXPAND)
        p.SetSizer(sizer)
        

if __name__ == "__main__":
    app = wx.App()
    UIFrame().Show()
    app.MainLoop()
        

1 个答案:

答案 0 :(得分:1)

您在i = parent.GetString(Points.a)行中传递了Points.a参数,但是GetString没有参数,因为它用于从项(即self.Item.GetString())中获取字符串。
Points.a不是wx定义的项目,实际上它是python list,要进行访问,您应该使用
更改上述有问题的行 i = str(Points.a[0])
i = Points.a[0]
i = Points.a
i = str(Points.a)取决于您的要求。

根据您选择的访问方式,您可能必须更改 self.poi.SetLabel(i)也是如此,因为i可以是listint而不是必需的str

使用第一个选项运行无需更改即可