python kivy kv模板调用_Python-Kivy:使用另一个类中的函数更改和保留kv文件值

我目前正试图改变一个.kv文件的值(如微调器小部件的文本),同时改变一个屏幕-基于我以前从屏幕上得到的值。这就是我的设置的样子(简化):

mail = ''

name = ''

gender = ''

city = ''

class LoginScreen(Screen):

def get_started(self):

global mail

global name

global gender

global city

mail = self.ids.login_mail.text

data_person = queries.fetch_data(mail)

name = data_person[0]

gender = data_person[1]

city = data_person[2]

MainApp().change_screen('DisplayScreen')

DisplayScreen().get_data()

class DisplayScreen(self):

def get_data(self):

global mail

global name

global gender

global city

self.ids.spinner_name.text = name

self.ids.spinner_gender.text = gender

self.ids.spinner_city.text = city

类/屏幕登录屏幕确实有一个TextInput小部件,它接受来自个人的电子邮件地址。然后,.kv文件中的LabelButton会调用根函数“get_started”,然后获取此人的输入邮件(ids.login_mail.text),并将其作为参数来调用函数“fetch_data”,该函数位于querys.py中(用于从数据库中获取值)。结果是一个列表,其中包含值name、gender、city(链接到此人的电子邮件地址)。通过将变量设为全局变量,我试图在类/屏幕显示屏幕中调用一个函数“get_data”。DisplayScreen确实包含微调器,然后应该自动将变量(名称、性别、城市)作为默认文本。然后屏幕应该显示这三个值,用户可以使用微调器更改这些值并更新其数据。但是它确实运行,不显示任何错误,并且仍然不会更改显示屏幕中的微调器文本。我认为问题在于,即使文本更新工作正常,屏幕更改也总是用默认值(通过加载默认的.kv文件)覆盖更改。在默认的.kv文件中,微调器文本设置为“微调器A”、“微调器B”和“微调器C”。如果我在DisplayScreen类中的self.ids.spinner_name.text=name update之前添加了print(name),那么它确实可以在控制台中正确地为我打印name值。所以正确的值是可用的,它只是在保持.kv文件更新和不返回默认值方面有问题。

def change_screen(self, screen_name):

screen_manager = GUI.ids['screen_manager']

screen_manager.transition = NoTransition()

screen_manager.current = screen_name

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值