这是我的代码
import wx
class justin(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,'frame', size=(800, 500))
panel=wx.Panel(self)
panel.SetBackgroundColour("red")
self.box1=wx.TextCtrl(panel, -1, "type number")
self.box2=wx.TextCtrl(panel, -1, "type number")
self.box1.SetBackgroundColour("gray")
self.box2.SetBackgroundColour("gray")
siz=wx.BoxSizer(wx.VERTICAL)
siz.Add(self.box1, 1)
siz.Add(self.box2, 1)
panel.SetSizer(siz)
button=wx.Button(panel, label="enter", pos=(250, 200), size=(100, 50))
self.Bind(wx.EVT_BUTTON, self.yesitstrue, button)
def yesitstrue(self, event):
a=(float(self.box1.GetValue()))
b=(float(self.box2.GetValue()))
answer = a+b
wx.StaticText(self.panel,id, answer, pos=(200, 100))
if __name__=='__main__':
app=wx.PySimpleApp()
frame=justin(parent=None, id=-1)
frame.Show()
app.MainLoop()
我要做的是从两个文本框中获取文本并添加它然后以GUI格式打印。当程序到达静态文本的部分时,它表示面板不存在。 如果发现任何其他错误,我想要任何帮助,请告诉我,因为我真的需要它。
答案 0 :(得分:0)
您的代码存在一些问题:
panel
:panel
不存在错误是因为在您的代码中,__init__
方法中的变量在yesitstrue
中不再可用} 方法。要解决此问题,您必须在__init__
方法中将其指定为实例属性,如下所示:self.panel = panel
。之后,您将能够使用yesitstrue
方法使用self.panel
访问它,因为您已经尝试过了。
id
:类型nex_StaticText
的{{1}}预期参数2表示第二个参数int
不是预期类型。请注意id
是一个python内置函数,这就是导致问题的原因。该解决方案类似于id
的解决方案:将panel
参数指定为实例属性,如下所示:id
。之后,使用self.id = id
而不是wx.StaticText
致电self.id
。
id
:所需的字符串或unicode类型意味着您传递的内容并非真正的文本。在代码中,answer
和a
转换为b
,答案就是它们的总和。因此,它也是float
。要解决此问题,请使用float
将answert
转换为字符串,然后使用str
wx.StaticText