【发布时间】:2017-10-16 13:34:34
【问题描述】:
我有如下所示的代码。在函数填充中,我有来回、去往和运输的变量。我试图将这些变量调用到 get 函数中,然后在显示 Popup 时调用它们。然后这些变量将显示在弹出窗口中。但是,我有一个 NameError: name 'fro' is not defined with my code。当我使用num = Connected.get() 而不是num = g 并注释掉c =Connected() 和g= c.get() 我得到bound method MessageBox.get of <connected.MessageBox object at 0x000000000B36F3F0>> 显示在MessageBox 弹出窗口中。我不知道我做错了什么。有更好的方法吗?
class Connected(Screen):
def populate(self, transText, beginText, toText):
global fro
global to
global transport
self.rv.data = []
self.ids.results.text=""
self.ids.no_entry.text=""
fro = beginText
to = toText
transport = transText
def get(self):
b = fro
a = StringProperty(b)
return a
class MessageBox(Popup):
c = Connected()
g = c.get()
route = 'MessageBox'
num = g
#num = Connected.get()
def popup_dismiss(self):
self.dismiss()
Kivy.kv
<MessageBox>:
title: root.route
size_hint: None, None
size: 400, 400
separator_color: 1,0,0,1
BoxLayout:
orientation: 'vertical'
Label:
id: info
#text: 'nice'
text: str(root.num)
Button:
size_hint: 1, 0.2
text: 'OK'
on_press:
root.dismiss()
【问题讨论】:
-
在
def get(self)中,变量fro没有定义,所以它失败了。也许您忘记在该方法中添加global fro? -
我也试过了。它仍然给我一个错误。但是,如果我不在 get 函数中调用 get() 函数和 print(fro),它就可以正常工作。
-
正如我所说,如果您从未定义过
fro,它将无法正常工作。 -
我认为您已经在 Python 脚本的顶部(即所有导入语句之后)定义了变量“fro”、“to”和“transport”。
标签: python-3.x kivy kivy-language