警告:已访问对象“<__main__.Tab >object at”的已弃用属性“<StringProperty name=text>”,将在未来版本中删除

Posted

技术标签:

【中文标题】警告:已访问对象“<__main__.Tab >object at”的已弃用属性“<StringProperty name=text>”,将在未来版本中删除【英文标题】:WARNING: Deprecated property "<StringProperty name=text>" of object "<__main__.Tab >object at " was accessed, it will be removed in a future version 【发布时间】:2021-11-21 18:55:41 【问题描述】:

我正在尝试将图表添加到 KivyMD 的选项卡中,这是出现的警告,并且图表未显示在界面上。这是我从代码中收到的完整错误:

[警告] 对象“ma​​in.Tab 对象位于 0x0000011807CA3040>”的已弃用属性“”已被访问,它将在未来的版本中删除

x = [1, 2, 3, 4, 5, 6, 7, 8]
y = [1, 2, 7, 4, 1, 6, 5, 8]

plt.plot(x, y)
y_label = 'performance'


class Tab(FloatLayout, MDTabsBase):
     graph = StringProperty()


class StatsScreen(Screen):
    def __init__(self, **kwargs):
        super(StatsScreen, self).__init__()
        self.graph = self.ids.Last_graph
        self.graph.add_widget(FigureCanvasKivyAgg(plt.gcf()))

这是屏幕的 kivymd 代码:

<StatsScreen>
name: 'stats_interface'
MDFloatLayout:
    size: root.width, root.height
    md_bg_color: app.theme_cls.primary_light

    MDLabel:
        id: heading_label
        text: 'Statistics'
        size_hint: (0.75, 0.1)
        pos_hint: 'center_x':0.5 , 'y':0.90
        bold: True
        halign: 'center'

    MDTabs:
        size_hint: 0.95, 0.53
        pos_hint: 'center_x':0.5 , 'y':0.4 
        tab_display_mode: 'text'
        Tab:
            name: 'Last Session'
            text: 'Last Session'
            FloatLayout:
                id: Last_graph
        Tab:
            name: 'Progress Graph'
            text: 'Progress Graph'

    MDBoxLayout:
        orientation: 'vertical'
        size_hint: 0.95, 0.1
        pos_hint: 'center_x':0.5, 'top':0.39
        md_bg_color: 250/255, 250/255, 250/255, 1
        line_color: 0, 0, 0, 1
        radius: [15, ]

        MDLabel:
            id: goal_grade_label
            text: 'Goal Grade: '
            size: self.texture_size
            pos_hint: 'x':0.05 , 'center_y':0.8
            bold: True

        MDLabel:
            id: current_grade_label
            text: 'Current Grade: '
            size: self.texture_size
            pos_hint: 'x':0.05 , 'center_y':0.5
            bold: True

    MDBoxLayout:
        orientation: 'vertical'
        size_hint: 0.95, 0.2
        pos_hint: 'center_x':0.5, 'top':0.28
        md_bg_color: 250/255, 250/255, 250/255, 1
        line_color: 0, 0, 0, 1
        radius: [18, ]

        MDLabel:
            text: 'Last session analysis: '
            size: self.texture_size
            pos_hint: 'x':0.05 , 'center_y':0.8
            bold: True

        MDLabel:
            id: percentage_label
            text: 'Percentage: '
            size: self.texture_size
            pos_hint: 'x':0.05 , 'center_y':0.6

        MDLabel:
            id: grade_label
            text: 'Grade: '
            size: self.texture_size
            pos_hint: 'x':0.05 , 'center_y':0.4

        MDLabel:
            id: marks_label
            text: 'Total Marks: '
            size: self.texture_size
            pos_hint: 'x':0.05 , 'center_y':0.2

    MDTextButton:
        text: 'Return'
        size_hint: (0.2, 0.05)
        pos_hint: 'x': 0.1, 'y': 0.02
        bold: True

    MDTextButton:
        text: 'Settings'
        size_hint: (0.2, 0.05)
        pos_hint: 'x': 0.475, 'y': 0.02
        bold: True

    MDTextButton:
        text: 'Topics'
        size_hint: (0.2, 0.05)
        pos_hint: 'x': 0.85, 'y': 0.02
        bold: True

<Tab>:
    text: 'testing'
    FloatLayout:
    id: test_id

有没有办法解决这个错误?

【问题讨论】:

【参考方案1】:

首先,它不是Error,而是Warning,如果您阅读消息的内容,实际上很清楚您正在访问Tab 类的属性,该属性被归类为deprecated,很快就会被完全删除,尽管在这种情况下它有点奇怪,因为显然它正在尝试访问一个名为 "" 的属性。不用担心,当 Kivy 的未来版本发布时,警告文本应该会消失,但是在您等待时,您可以通过添加以下代码行来隐藏这些警告消息:

from kivy.config import Config
Config.set("kivy", "log_level", "error")
Config.write()

【讨论】:

感谢您修复了警告,但图表仍未输出到选项卡中。当我运行代码时,选项卡都是空白的。有什么办法可以解决这个问题,还是我必须添加单独的代码才能将其输出到选项卡上。 不过,您将哪个小部件称为“图表”? 我在第一个选项卡的浮动布局中添加了一个小部件。当我查看在屏幕上显示图表的方法时,这就是使用的方式。我对 kivy 很陌生,所以我主要使用这个项目的文档和教程。有没有其他方法可以将图表添加到第一个选项卡的浮动布局中,或者我用来引用我想要添加图表的特定位置的 id 是否存在问题?

以上是关于警告:已访问对象“<__main__.Tab >object at”的已弃用属性“<StringProperty name=text>”,将在未来版本中删除的主要内容,如果未能解决你的问题,请参考以下文章

关闭已创建 STA COM 对象的线程时避免断开上下文警告

在 git svn clone/fetch 期间避免“警告:有太多无法访问的松散对象”

如何弹出“蜂窝数据已关闭”警告信息?

在已卸载的组件中发出有关setState的警告

警告:mysql_query():MySQL 服务器已消失

警告:count():必须是实现 Countable 的数组或对象