使用Kivy的Python中的继承问题

使用Kivy的Python中的继承问题,python,oop,inheritance,kivy,Python,Oop,Inheritance,Kivy,我有这个应用程序,有两个类,每个屏幕一个:一个登录屏幕和一个测试屏幕。在SIGNIN类中,应用程序从文本输入中获取电子邮件地址,并使用它为用户创建数据库。 我想在测试类中再次使用文本输入,因此我认为可以从SIGNIN类继承。现在,这两个类都继承自kivy的Screen类。所以我认为我的测试类应该只从SIGNIN类继承。但如果我这样做,我将继承整个屏幕:两个屏幕相互叠加。最后,我只想从SIGNIN类中获取用户变量内部的值。我该怎么做?下面是我的一个例子。我想在第二个类中访问表_name的内容 cl

我有这个应用程序,有两个类,每个屏幕一个:一个登录屏幕和一个测试屏幕。在SIGNIN类中,应用程序从文本输入中获取电子邮件地址,并使用它为用户创建数据库。 我想在测试类中再次使用文本输入,因此我认为可以从SIGNIN类继承。现在,这两个类都继承自kivy的Screen类。所以我认为我的测试类应该只从SIGNIN类继承。但如果我这样做,我将继承整个屏幕:两个屏幕相互叠加。最后,我只想从SIGNIN类中获取用户变量内部的值。我该怎么做?下面是我的一个例子。我想在第二个类中访问表_name的内容

class SigninWindows(Screen):

    def add_user(self):
        uname = self.ids.username_field.text
        table_name = uname.replace('@', '_').replace('.', '_') 

class QuestionWindows(Screen):

    def __init__(self,  **kwargs):
        super(QuestionWindows, self).__init__(**kwargs)

    def _get_df(self):
        try:
            conn = pymysql.connect(
                host=hostname,
                port=int(port),
                user=user,
                passwd=passwd,
                db=db,
                charset='utf8mb4'
            )
            query = (""" SELECT * FROM db.`%s` """ % table_name)
            print('QUERY IS:',query)
:
id:登录页面
姓名:“登录页面”
方向:“垂直”
间距:10
空格x:self.size[0]/5.5
在以下情况之前:
颜色:
rgba:(0,0,0,1)
矩形:
大小:self.size
pos:self.pos
盒子布局:
id:数据签名
方向:“垂直”
大小提示:1
盒子布局:
id:validate\u info
方向:“垂直”
尺寸提示:1,0.8
填充:80,10
标签:
id:info
文本:“”
标记:正确
文本输入:
id:username\u字段
提示文字:“用户名”
提示文字颜色:0.5,0.5,0.5,1
多行:False
焦点:正确
on_text_validate:pwd_field.focus=True
尺寸提示:1.8
前景色:0.5,0.5,0.5,1
背景颜色:.1、.1、.1,1
写入选项卡:False

我尚未测试此代码,但如果您修改
添加用户()
以返回
表格名称
,则您可以使用它通过
屏幕管理器访问
问题窗口中的
表格名称
。获取屏幕()
方法:

class SigninWindows(Screen):

    def add_user(self):
        uname = self.ids.username_field.text
        table_name = uname.replace('@', '_').replace('.', '_') 
        return table_name

class QuestionWindows(Screen):

    def __init__(self,  **kwargs):
        super(QuestionWindows, self).__init__(**kwargs)

    def _get_df(self):
        table_name = self.manager.get_screen('signin_page').add_user()
        try:
            conn = pymysql.connect(
                host=hostname,
                port=int(port),
                user=user,
                passwd=passwd,
                db=db,
                charset='utf8mb4'
            )
            query = (""" SELECT * FROM db.`%s` """ % table_name)
            print('QUERY IS:',query)

它工作得很好!再次感谢您的帮助。
class SigninWindows(Screen):

    def add_user(self):
        uname = self.ids.username_field.text
        table_name = uname.replace('@', '_').replace('.', '_') 
        return table_name

class QuestionWindows(Screen):

    def __init__(self,  **kwargs):
        super(QuestionWindows, self).__init__(**kwargs)

    def _get_df(self):
        table_name = self.manager.get_screen('signin_page').add_user()
        try:
            conn = pymysql.connect(
                host=hostname,
                port=int(port),
                user=user,
                passwd=passwd,
                db=db,
                charset='utf8mb4'
            )
            query = (""" SELECT * FROM db.`%s` """ % table_name)
            print('QUERY IS:',query)