python - 基维,Python : Update Label on_file_drop

标签 python label kivy

我正在尝试做一个非常简单的 GUI,当文件被拖放到应用程序上时,它可以更新文本标签。

到目前为止,我已经能够识别文件何时被删除并在控制台上打印一条消息。不幸的是,现在我一直在尝试在文件被删除时将标签(带有消息“Linkin Park”)更新为“三天宽限期”,但我还没有做到。

有人可以帮我解决我的问题吗?

ma​​in.py

#Se importan archivos necesarios de Kivy
from kivy.app import App
from kivy.config import Config
from kivy.uix.label import Label
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.core.window import Window
from kivy.properties import StringProperty
import random

class MainLayout(FloatLayout):

    artistName = StringProperty()

    def __init__(self, **kwargs):
        super(MainLayout, self).__init__(**kwargs)
        self.artistName = "Linkin Park"

    def _on_file_drop(self):
        self.artistName = "Three Day Grace"
        print "File Dropped"

class MainApp(App):

    def build(self):
        self.title = "Shantazam"
        Window.bind(on_dropfile=self._on_file_drop)
        Window.size = (400,700)
        return MainLayout()

    def _on_file_drop(self, window, file_path):
        file_path = file_path.split("\\")
        fileToOpen = file_path[-2]+"\\"+file_path[-1]
        print(enter code herefileToOpen)
        MainLayout()._on_file_drop()
        return

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

MainApp.kv

 #:import utils kivy.utils


<MainLayout>:
    canvas:
        Color:
            rgb: utils.get_color_from_hex('#0088ff')

        Rectangle:
            pos: 0,0
            size: self.size

    Label:
        text: 'Shantazam'
        font_size: 72
        markup: True
        shorten: True
        ellipsis_options: {'color':(1,0.5,0.5,1),'underline':True}
        size_hint: (1, 0.17)
        pos_hint: {'x': 0 , 'y' : 0.7}
    Label:
        id: label1
        text: root.artistName

最佳答案

您只需要对 MainLayout 的引用,以便可以访问 artistName。如果您将 App 调整为:

class MainApp(App):

    def build(self):
        self.title = "Shantazam"
        Window.bind(on_dropfile=self._on_file_drop)
        Window.size = (400,700)
        self.mainLayout = MainLayout()
        return self.mainLayout

    def _on_file_drop(self, window, file_path):
        self.mainLayout.artistName = 'Three Day Grace'

我认为它会起作用。

关于python - 基维,Python : Update Label on_file_drop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53768087/

相关文章:

javascript - 在 chart.js 中将 x 轴的标签倾斜一定程度

python - on_stop 事件在 kivy 中没有被调用

python - 使用 SQL Alchemy 和 pymssql 指定故障转移合作伙伴

python - pyplot 图例用于按值着色的散点图

javascript - 将大整数数组从 javascript 传输到 Flask 的优化方法,反之亦然

label - 如何防止边缘标签弄乱graphviz中的布局?

Python:将字符串列表 'keys' 枚举为整数

javascript - 如何使用 Javascript 在行号已知时从表行中获取标签值

python - 未安装 SDK 管理器

python - 基维理解