gpt4 book ai didi

使用类(wx.Python)时出现Python TypeError

转载 作者:行者123 更新时间:2023-11-30 23:40:17 26 4
gpt4 key购买 nike

这个程序是当按钮被点击时wx.textctrl被写成“clicked”。

此代码运行没有错误。

import wx

class Mainwindow(wx.Frame):

def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(300, 300))
panel = wx.Panel(self, -1)

vbox = wx.BoxSizer(wx.VERTICAL)

hbox1 = wx.BoxSizer(wx.HORIZONTAL)
btn = wx.Button(panel, -1, 'OK', size=(70, 30))
btn.Bind(wx.EVT_BUTTON, self.click_btn) #line 12
hbox1.Add(btn, 0)
vbox.Add(hbox1, 0)

hbox2 = wx.BoxSizer(wx.HORIZONTAL)
self.tc = wx.TextCtrl(panel, -1, style=wx.TE_MULTILINE)
hbox2.Add(self.tc, 1, wx.EXPAND)
vbox.Add(hbox2, 1, wx.EXPAND)

panel.SetSizer(vbox)

self.Centre()
self.Show(True)


def click_btn(self, event): #line 27
self.tc.WriteText("clicked\n") #line 28



if __name__=="__main__":
app = wx.App()
Mainwindow(None, -1, u"sample")
app.MainLoop()

但是如果此代码以这种方式更改,则会出现错误。

更改为第 12 行。

btn.Bind(wx.EVT_BUTTON, Click_btn.click_btn)

更改为第 27 和 28 行。

class Click_btn:
def click_btn(self, event):
self.tc.WriteText("clicked\n")

错误是:Typeerror:必须使用 Click_btn 实例作为第一个参数调用未绑定(bind)方法 click_btn()(改为使用 CommandEvent 实例)

我不知道如何处理这个错误。

*后记

我阅读了答案,并且此代码发生了变化。但它不运行...

更改为第 12 行。

button = Click_btn()
btn.Bind(wx.EVT_BUTTON, button.click_btn)

更改为第 27 和 28 行。

class Click_btn(Mainwindow):
def click_btn(self, event):
Mainwindow.tc.WriteText("clicked\n")

请教我应该改变的点。

最佳答案

class Click_btn:
@classmethod
def click_btn(cls, event):
cls.tc.WriteText("clicked\n") #this will probably break now

这将允许您在类而不是类的实例上调用它

该类是Click_btn

实例将是btn = Click_btn()(btn是Click_btn的实例)

关于使用类(wx.Python)时出现Python TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12750570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com