Kivy 弹出 Filechooser 传递变量(选择)

Posted

技术标签:

【中文标题】Kivy 弹出 Filechooser 传递变量(选择)【英文标题】:Kivy popup Filechooser pass variable (selection) 【发布时间】:2018-07-01 08:27:25 【问题描述】:

我想将选择变量从 load_file_popup 文件选择器传递到 GUI。当我在选择文件后按下加载按钮时会出错

TypeError: 'NoneType' 对象不可调用

这是我的代码(简化)

class GUI(BoxLayout):

    file_path = StringProperty("Currently No File")


    def __init__(self, **kwargs):
        super(GUI, self).__init__(**kwargs)
        self.load_file_popup = load_file_popup()



    def load(self, selection):
        self.file_path = str(selection[0])
        self.dismiss()


class load_file_popup(Popup):

    load = ObjectProperty()

这里是千伏

<load_file_popup>:
    title: "Select File"
    size_hint: .9, .9
    SMSBoxLayout:
        orientation: "vertical"
        FileChooser:
            id: filechooser   
            FileChooserIconLayout


        SMSBoxLayout:
            size_hint: (1, 0.1)
            pos_hint: 'center_x': .5, 'center_y': .5
            SMSButton:
                text: "Cancel"
                on_release: root.dismiss()
            SMSButton:
                text: "Load"
                on_release: root.load(filechooser.selection)
                id: ldbtn
                disabled: True if filechooser.selection==[] else False

【问题讨论】:

【参考方案1】:

我已经找到了问题的答案,但我错过了一个论点。

def __init__(self, **kwargs):
    super(GUI, self).__init__(**kwargs)
    self.load_file_popup = load_file_popup(load=self.load)

def load(self, selection):
    self.file_path = str(selection[0])
    self.load_file_popup.dismiss()

【讨论】:

以上是关于Kivy 弹出 Filechooser 传递变量(选择)的主要内容,如果未能解决你的问题,请参考以下文章

Kivy - 更改 FileChooser 默认位置

FileChooser 的字体颜色

Kivy:单击按钮时如何更新标签

Kivy 将变量传递给类中的函数

Kivy:弹出窗口只能有一个小部件作为内容

在 Kivy 中,如何使用另一个类的关闭按钮关闭弹出窗口?