Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将变量从一个函数调用到另一个函数?_Python_Wxpython - Fatal编程技术网

Python 如何将变量从一个函数调用到另一个函数?

Python 如何将变量从一个函数调用到另一个函数?,python,wxpython,Python,Wxpython,在wxPython中,我试图从一个函数(在实例化器中)定义一个变量来调用另一个函数(不是在实例化器中,而是在类中) 我见过有人在他们的处境中解决别人的问题,我也尝试过其他人,但这对我不起作用 类名称提示(wx.Frame): 定义初始值(自,*args,**kw): 超级(名称提示,自我)。\uuuuu初始值(*参数,**千瓦) panl=wx.面板(自) textboxtest=wx.TextCtrl(panl)#将textboxtest定义为文本框 textboxtest.Bind(wx.E

在wxPython中,我试图从一个函数(在实例化器中)定义一个变量来调用另一个函数(不是在实例化器中,而是在类中)

我见过有人在他们的处境中解决别人的问题,我也尝试过其他人,但这对我不起作用

类名称提示(wx.Frame):
定义初始值(自,*args,**kw):
超级(名称提示,自我)。\uuuuu初始值(*参数,**千瓦)
panl=wx.面板(自)
textboxtest=wx.TextCtrl(panl)#将textboxtest定义为文本框
textboxtest.Bind(wx.EVT_TEXT,self.OnKeyTyped)
read=wx.按钮(panl,label=“Print”,pos=(0,25))
read.Bind(wx.EVT_按钮,self.PrintText)
def打印文本(自身、事件):
typedtext=event.textboxtest.GetString()#试图在此处调用相同的文本框
wx.StaticText(wx.Panel(self),label=typedtext,pos=(25,25))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app=wx.app()
frm=名称提示(无,标题为“篮球赛”)
frm.设置尺寸(0,019201040)
frm.Show()
app.MainLoop()
我得到这个错误:

AttributeError: 'CommandEvent' object has no attribute 'textboxtest'
Traceback (most recent call last):
  File "textboxtest.py", line 19, in PrintText
    typedtest = event.textboxtest.GetString() # attempting to call the same text box here

欢迎来到StackOverflow

实现所需功能的最简单方法是在创建
wx.TextCtrl
时使用
self
,这样它就可以从
\uuuuuu init\uuuuu
以外的方法获得,然后直接从其他方法访问
wx.TextCtrl
的值

import wx

class NamePrompts(wx.Frame):
    def __init__(self, *args, **kw):
        super(NamePrompts, self).__init__(*args, **kw)

        panl = wx.Panel(self)

        self.textboxtest = wx.TextCtrl(panl) # defining textboxtest as a text box
        #self.textboxtest.Bind(wx.EVT_TEXT, self.OnKeyTyped)

        read = wx.Button(panl, label="Print", pos=(0, 25))
        read.Bind(wx.EVT_BUTTON, self.PrintText)

    def PrintText(self, event):
        typedtext = self.textboxtest.GetValue() # attempting to call the same textbox here
        print(typedtext)
        wx.StaticText(wx.Panel(self), label=typedtext, pos=(25, 25))

if __name__ == '__main__':
    app = wx.App()
    frm = NamePrompts(None, title='Basketball Game')
    frm.SetSize(50,50,300,300)
    frm.Show()
    app.MainLoop()

尽管如此,如果您想了解如何通过事件传递自定义变量,您可以检查其用法和。

它不应该是
self.textboxtest.GetString()
而不是
event.textboxtest.GetString()
?和构造函数中的
self.textboxtest=wx.TextCtrl(panl)
self.textboxtest.Bind(wx.EVT_TEXT,self.OnKeyTyped)
。根据wxPython,这就是它应该是的。或者我是这么听说的。是的,那不管用