Kivy, Python: обновление метки on_file_drop - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь создать очень простой графический интерфейс, который может обновлять текстовую метку, когда файл сбрасывается в приложении.

До сих пор я был в состоянии распознать, когда файл удаляется.и распечатать сообщение на консоли.К сожалению, сейчас я пытаюсь обновить ярлык (с сообщением «Linkin Park») на «Three Day Grace», когда файл удален, но я пока не сделал этого.

Может кто-нибудь помочь мне решить мой вопрос?

main.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

1 Ответ

0 голосов
/ 13 декабря 2018

Вам просто нужна ссылка на ваш 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'

Я думаю, что это будет работать.

...