我目前正在使用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()
答案 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
可以是list
或int
而不是必需的str
使用第一个选项运行无需更改即可