在kivy中的类之间访问对象属性

时间:2018-07-10 16:59:24

标签: sqlite kivy python-3.6

此处的这段代码创建了按钮的滚动视图,允许我从不同的“票证”列表中进行选择

    SearchResultButton(Button(text=str(Datarray2[i]),id=str(Datarray2[i]),on_press=self.Pressbtn ))
self.ids.SearchResult.add_widget(SearchResultButton)

从那里打开此函数,该函数应设置一个变量(在本例中为“ UpdateTicketNum”),该变量将在另一个函数中用于在另一个屏幕中设置标签文本。

def Pressbtn(self, SearchResultButton):
    global UpdateTicket
    UpdateTicket = OPENTicket
    woo = SearchResultButton.text
    print(SearchResultButton.text)
    wow = [blank.strip() for blank in woo.split(',')]
    print("\n\n\n\n")
    global UpdateTicketNum
    UpdateTicketNum = (wow[0])

    self.manager.get_screen('UpdateTicket').UpdateOpen()

这时将打开sqlite数据库并再次检查TicketNumber是否有效。尝试访问kv版本内部的标签时出现问题

def UpdateOpen(self):
    print("TESTSETST")
    conn = sqlite3.connect('TicketData.db', timeout=10)
    UD = conn.cursor()


    UD.execute('SELECT TicketNumber FROM TicketData WHERE TicketNumber = ?',(UpdateTicketNum,))
    tips = UD.fetchone()
    print(tips[0])
    tipsy = tips[0]

    UpdatedLabelTexT = tipsy
    sm.current=('UpdateTicket')
    UpdateTicket.ids.UpdateLabels['text']=(UpdatedLabelTexT)

UpdateTicket.ids.UpdateLabels ['text'] = UpdatedLabelText]字段始终声称是滚动视图按钮的属性,即使我在另一个类中使用不同的参数对其进行了初始化。抱歉,这个问题的格式不正确。但是3天的时间想尽办法解决这个问题,然后我就抢购了。

这是KV中的位

<UpdateTicket>
name: 'UpdateTicket'
on_enter:
    root.UpdateOpen()

orientation: "vertical"
FloatLayout:
    canvas.before:
        Color:
            rgba: .0, .6, 1, 1
        Rectangle:  
            pos: self.pos
            size: self.size
            source: "lights.jpg"
Label:
    id: UpdateLabels
    text: "filler"
    multiline: False
    size_hint: (None, None)
    size: (root.width/5,root.height/20)
    pos_hint:{'center_x': .5,'center_y': .5 }

以及如何初始化屏幕

sm.add_widget(UpdateTicket(name='UpdateTicket'))

1 个答案:

答案 0 :(得分:0)

我找到了适合我的解决方案。首次初始化应用程序时 SampleApp(App)类     返回sm(以构建应用程序)

我需要用

替换返回的SM
    global root
    return sm

    root = ScreenManager()
    return root

这似乎可以解决我的问题。感谢阅读