首页 > 解决方案 > 如何访问python中的自定义类?

问题描述

我是编程新手,刚学python。我有一个非常简单的程序,它显示了一条弹出消息,看起来还可以:

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.popup import Popup

class t6App(App):
    def build(self):
        lb = Label(text="Welcome Here",size_hint=(1,0.8),pos_hint={'left':1,'top':1})
        bt = Button(text="Press Me", size_hint=(1,0.1),pos_hint={'left':1,'x':0})
        fl = FloatLayout()
        fl.add_widget(lb)
        fl.add_widget(bt)
        cp = Popup(title='Guys', content=fl)
        return cp

t6App().run()
    

然后我想修改它,并添加更多东西,然后弹出窗口没有显示:(2个程序总是相同的)

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.popup import Popup

class CustPop(Popup):
    def build(self):
        lb = Label(text="Welcome Here",size_hint=(1,0.8),pos_hint={'left':1,'top':1})
        bt = Button(text="Press Me", size_hint=(1,0.1),pos_hint={'left':1,'x':0})
        fl = FloatLayout()
        fl.add_widget(lb)
        fl.add_widget(bt)
        cp = Popup(title='Guys', content=fl)
        return cp

class t6App(App):
    def build(self):
        cp1 = CustPop()
        return cp1
        
t6App().run()
        

代码确实可以运行,但似乎无法访问 CustPop() 中的布局 /button /label (成为空白弹出窗口)。我的问题是为什么以及如何使它工作?

谢谢各位。我很感激。

标签: pythonkivy

解决方案


您在 中定义了一个build()方法CustPop,但与App类不同的是,该build()方法不会自动调用。您应该将该代码(进行一些小的更改)放入__init__()方法中。

class CustPop(Popup):
    def __init__(self, **kwargs):
        super(CustPop, self).__init__(**kwargs)
        lb = Label(text="Welcome Here", size_hint=(1, 0.8), pos_hint={'left': 1, 'top': 1})
        bt = Button(text="Press Me", size_hint=(1, 0.1), pos_hint={'left': 1, 'x': 0})
        fl = FloatLayout()
        fl.add_widget(lb)
        fl.add_widget(bt)
        # cp = Popup(title='Guys', content=fl)
        self.title = 'Guys'
        self.content = fl

推荐阅读