gpt4 book ai didi

python - 全局变量和函数...以及 Kivy (Python 2.7.10) (Kivy 1.9.1)

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:04 25 4
gpt4 key购买 nike

我正在尝试使用 Kivy 将 GUI 添加到某些脚本中。然而,以下问题严重阻碍了我:

class SearchScreen(Screen):
search_input = ObjectProperty()

users_dic = {}

def search_user(self):
globals()["users_dic"] = GetSessionToken.find_user(
self.search_input.text, agent_head)

print globals()['users_dic']

users = [key for key in users_dic.iterkeys()]

self.search_results.item_strings = users

self.search_results.adapter.data[:]
self.search_results.adapter.data.extend(users)
self.search_results._trigger_reset_populate()

class userButton(ListItemButton):
pass

def getUserSession(self, user):
global current_user, user_header, session_token

current_user = user

users_dic = globals()['users_dic']

print users_dic

try:
user_header, session_token = GetSessionToken.UserSession(
users_dic[user], agent_head)
return self.root.changeScreen("operations")
except ValueError:
return self.root.changeScreen("denied")

它会产生以下错误:

 KeyError: 'users_dic'

我不明白为什么这适用于“search_user”但不适用于“getUserSession”。为了确认,“search_user”打印出字典:

{u'user1': u'202703', u'user2': u'202702', u'user3': u'201105'}

当我运行“getUserSession('user1')”时,我希望获得“202703”。我对 Globals 缺少什么?这些函数处理“users_dic”的方式有什么区别?

编辑:

search_user 在 Kivy 语言文件中被调用,如下所示:

<SearchScreen@Screen>:
search_input: search_box
search_results: search_results_list
BoxLayout:
orientation: "vertical"
BoxLayout
height: root.height/10
size_hint_y: None
TextInput:
id: search_box
size_hint_x: 75
Button:
text:"Search"
size_hint_x: 25
on_press: root.search_user()

getUserSession 在 Kivy 语言文件中被调用,如下所示:

<userButton>:
on_press: main.SearchScreen().getUserSession(self.text)

最佳答案

search_user 中,您已将值设置为 Globals["users_dic"],因此当您的代码到达 getUserSession 时,您可以访问它code> user_dic 尚未在 Globals 中定义。

如果您在调用 getUserSession 之前调用了 search_user,您应该能够访问 users_dic 作为 Globals,如本例所示:

class Foo():
def test(self):
globals()['test'] = 'test'
def post_test(self):
print globals()['test']

foo = Foo()
foo.test()
foo.post_test()
>>test

需要明确的是,在类作用域中设置 users_dic 并不会使它成为 Globals 的一部分。

关于python - 全局变量和函数...以及 Kivy (Python 2.7.10) (Kivy 1.9.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35415095/

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