Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.kv和python代码中的变量不同步_Python_Kivy_Desktop Application_Kivy Language - Fatal编程技术网

.kv和python代码中的变量不同步

.kv和python代码中的变量不同步,python,kivy,desktop-application,kivy-language,Python,Kivy,Desktop Application,Kivy Language,当我尝试从python代码中访问id为total_area的TextInput时,会出现以下错误:AttributeError:'kivy.properties.ObjectProperty'对象没有属性'text'。我使用调试器来查看错误,在我看来,python代码中的变量并没有链接到kv文件中的变量。帮助 Python代码: class RootWidget(Widget): Config.set('graphics', 'resizable', '0') Config.s

当我尝试从python代码中访问id为total_area的TextInput时,会出现以下错误:AttributeError:'kivy.properties.ObjectProperty'对象没有属性'text'。我使用调试器来查看错误,在我看来,python代码中的变量并没有链接到kv文件中的变量。帮助 Python代码:

class RootWidget(Widget):

    Config.set('graphics', 'resizable', '0')
    Config.set('graphics', 'height', '720')
    Config.set('graphics', 'width', '480')

    koatuu_obl_cent = ObjectProperty()
    koatuu_city = ObjectProperty()
    kitchen_area = ObjectProperty()
    qt_room = ObjectProperty()
    floor = ObjectProperty()
    qt_floor = ObjectProperty()
    total_area = ObjectProperty()
    living_area = ObjectProperty()
    year_building = ObjectProperty()

    @classmethod
    def button_OnPress(self):
        print(self.total_area.text)


class DeepEval(App):

    def build(self):
        return RootWidget()


if __name__ == '__main__':
    DeepEval().run()

.kv:

#:导入工厂kivy.Factory.Factory
:
自动解除:错误
大小提示:无,无
尺码:400400
koatuu_obl_cent:koatuu_obl_cent
库图尤市:库图尤市
厨房区域:厨房区域
qt_房间:qt_房间
楼层:楼层
qt_层:qt_层
总面积:总面积
生活区:生活区
年份建筑:年份建筑
图片:
资料来源:“imgs/background.jpg”
大小:self.texture\u大小
主持人安排:
主播:中锋
主播:“中心”
尺寸:根.宽度,根.高度
盒子布局:
方向:“垂直”
身高:350
宽度:225
大小提示:无
尺寸提示:无
间距:22.5
文本输入:
id:总面积
多行:False
提示文字:“参数12”
哈利恩:“中心”
前景色:.5.5.5.75
身高:33
宽度:225
大小提示:无
尺寸提示:无
文本输入:
id:厨房区
多行:False
提示文字:“参数1”
哈利恩:“中心”
前景色:.5.5.5.75
身高:33
宽度:225
大小提示:无
尺寸提示:无
文本输入:
id:居住区
多行:False
提示文字:“参数1”
哈利恩:“中心”
前景色:.5.5.5.75
身高:33
宽度:225
大小提示:无
尺寸提示:无
文本输入:
id:qt_房间
多行:False
提示文字:“参数1”
哈利恩:“中心”
前景色:.5.5.5.75
身高:33
宽度:225
大小提示:无
尺寸提示:无
文本输入:
id:楼层
多行:False
提示文字:“参数1”
哈利恩:“中心”
前景色:.5.5.5.75
身高:33
宽度:225
大小提示:无
尺寸提示:无
文本输入:
id:qt_层
多行:False
提示文字:“参数1”
哈利恩:“中心”
前景色:.5.5.5.75
身高:33
宽度:225
大小提示:无
尺寸提示:无
文本输入:
id:year_大厦
多行:False
提示文字:“参数1”
哈利恩:“中心”
前景色:.5.5.5.75
身高:33
宽度:225
大小提示:无
尺寸提示:无
按钮:
id:koatuu_obl_cent
文本:“打开弹出窗口”
发布时:Factory.MyPopup().open()
身高:33
宽度:225
大小提示:无
尺寸提示:无
按钮:
id:koatuu_市
文本:“打开弹出窗口”
发布时:Factory.MyPopup().open()
身高:33
宽度:225
大小提示:无
尺寸提示:无
主持人安排:
主播x:“中心”
主播:“底部”
填充:0,0,0,25
按钮:
正文:“计算”
大小提示:无
尺寸提示:无
身高:50
宽度:135
on_press:root.button_OnPress()
主持人安排:
主持人:对
主播:“底部”
按钮:
文本:“cam”
大小提示:无
尺寸提示:无
身高:45
宽度:45
您编写了@classmethod,因此得到了一个class方法,它的第一个参数不是类的实例(通常称为
self
),而是类本身(通常称为
cls

因此,您的
self.total_area
相当于
RootWidget.total_area
,正如错误所说,这是一个ObjectProperty


您需要将total_区域作为类实例的属性进行访问。在本例中,删除执行此操作的
@classmethod

。谢谢!
#:import Factory kivy.factory.Factory

<MyPopup@Popup>:
    auto_dismiss: False

    size_hint: None, None
    size: 400, 400

<RootWidget>

    koatuu_obl_cent: koatuu_obl_cent
    koatuu_city: koatuu_city
    kitchen_area: kitchen_area
    qt_room: qt_room
    floor: floor
    qt_floor: qt_floor
    total_area: total_area
    living_area: living_area
    year_building: year_building

    Image:
        source: 'imgs/background.jpg'
        size: self.texture_size

    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'center'
        size: root.width, root.height

        BoxLayout:
            orientation: 'vertical'
            height: 350
            width: 225
            size_hint_x: None
            size_hint_y: None
            spacing: 22.5

            TextInput:
                id: total_area
                multiline: False
                hint_text: "Param12"
                halign: 'center'
                foreground_color: .5, .5, .5, .75
                height: 33
                width: 225
                size_hint_x: None
                size_hint_y: None

            TextInput:
                id: kitchen_area
                multiline: False
                hint_text: "Param1"
                halign: 'center'
                foreground_color: .5, .5, .5, .75
                height: 33
                width: 225
                size_hint_x: None
                size_hint_y: None

            TextInput:
                id: living_area
                multiline: False
                hint_text: "Param1"
                halign: 'center'
                foreground_color: .5, .5, .5, .75
                height: 33
                width: 225
                size_hint_x: None
                size_hint_y: None

            TextInput:
                id: qt_room
                multiline: False
                hint_text: "Param1"
                halign: 'center'
                foreground_color: .5, .5, .5, .75
                height: 33
                width: 225
                size_hint_x: None
                size_hint_y: None

            TextInput:
                id: floor
                multiline: False
                hint_text: "Param1"
                halign: 'center'
                foreground_color: .5, .5, .5, .75
                height: 33
                width: 225
                size_hint_x: None
                size_hint_y: None

            TextInput:
                id: qt_floor
                multiline: False
                hint_text: "Param1"
                halign: 'center'
                foreground_color: .5, .5, .5, .75
                height: 33
                width: 225
                size_hint_x: None
                size_hint_y: None

            TextInput:
                id: year_building
                multiline: False
                hint_text: "Param1"
                halign: 'center'
                foreground_color: .5, .5, .5, .75
                height: 33
                width: 225
                size_hint_x: None
                size_hint_y: None

            Button:
                id: koatuu_obl_cent
                text: 'Open popup'
                on_release: Factory.MyPopup().open()
                height: 33
                width: 225
                size_hint_x: None
                size_hint_y: None

            Button:
                id: koatuu_city
                text: 'Open popup'
                on_release: Factory.MyPopup().open()
                height: 33
                width: 225
                size_hint_x: None
                size_hint_y: None

        AnchorLayout:
            anchor_x: "center"
            anchor_y: "bottom"
            padding: 0,0,0,25

            Button:
                text: "Calculate"
                size_hint_x: None
                size_hint_y: None
                height: 50
                width: 135
                on_press: root.button_OnPress()

        AnchorLayout:
            anchor_x: "right"
            anchor_y: "bottom"

            Button:
                text: "cam"
                size_hint_x: None
                size_hint_y: None
                height: 45
                width: 45

@classmethod
def button_OnPress(self):
    print(self.total_area.text)