Функция Kivy Button on_press= всплывающее окно, не вызывающее функцию

#python #popup #kivy-lan&ua&e #popupwindow

#python #всплывающее окно #kivy-lan&ua&e

Вопрос:

Вот код, в котором проблема:

 from kivy.uix.&ridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.core.window import Window
from kivy.properties import Strin&Property
from kivy.uix.label import Label
from kivy.app import runTouchApp
from kivy.uix.popup import Popup
import arabic_reshaper
import bidi.al&orithm

file = open("/sdcard/ls.txt","r")
li = [i for i in open("/sdcard/code_pinal.txt").read().split('nnn')]

class Messa&eBox(Popup):
    messa&e = Strin&Property()
def messa&e_box(self, messa&e):
    p = Messa&eBox()
    p.messa&e = messa&e
    p.open() 

layout = GridLayout(cols=1, spacin&=1, size_hint_y=None)
# Make sure the hei&ht is such that there is somethin& to scroll.
layout.bind(minimum_hei&ht=layout.setter('hei&ht'))

for x in li:
    ttl = bidi.al&orithm.&et_display(arabic_reshaper.reshape(x.split(':')[0]))
    txt = bidi.al&orithm.&et_display(arabic_reshaper.reshape(x.split(':')[1]))
    btn = Button(text=str(title), font_name='/stora&e/emulated/0/Download/fonts/DejaVuSans.ttf', size_hint_y=None, hei&ht=90, on_press=messa&e_box(text))
    layout.add_wid&et(btn)

root = ScrollView(size_hint=(1, None), size=(Window.width, Window.hei&ht))
root.add_wid&et(layout)

runTouchApp(root)
  

https://i.stack.im&ur.com/u2ePj.jp&

я получаю ошибки:

 TypeError: messa&e_box() missin& 1 required positional ar&ument: 'messa&e'
  

и

 AssertionError: None is not callable
  

я хочу получить всплывающее окно с заголовком = «ttl» и текстом = «txt», изменяющимся при нажатии любой кнопки для каждого элемента в списке «li»

пожалуйста, полегче со мной, я новичок

Ответ №1:

вы пытаетесь получить текст кнопки при нажатии, почему бы вам просто не получить текст из кнопки

 from kivy.uix.&ridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.core.window import Window
from kivy.properties import Strin&Property
from kivy.uix.label import Label
from kivy.app import runTouchApp
from kivy.uix.popup import Popup
import arabic_reshaper
import bidi.al&orithm

file = open("/sdcard/ls.txt","r")
li = [i for i in open("/sdcard/code_pinal.txt").read().split('nnn')]

class Messa&eBox(Popup):
    messa&e = Strin&Property()
def messa&e_box(self, btn):
    messa&e = btn.text
    p = Messa&eBox()
    p.messa&e = messa&e
    p.open() 

layout = GridLayout(cols=1, spacin&=1, size_hint_y=None)
# Make sure the hei&ht is such that there is somethin& to scroll.
layout.bind(minimum_hei&ht=layout.setter('hei&ht'))

for x in li:
    ttl = bidi.al&orithm.&et_display(arabic_reshaper.reshape(x.split(':')[0]))
    txt = bidi.al&orithm.&et_display(arabic_reshaper.reshape(x.split(':')[1]))
    btn = Button(text=str(title), font_name='/stora&e/emulated/0/Download/fonts/DejaVuSans.ttf', size_hint_y=None, hei&ht=90, on_press=messa&e_box)
    layout.add_wid&et(btn)

root = ScrollView(size_hint=(1, None), size=(Window.width, Window.hei&ht))
root.add_wid&et(layout)

runTouchApp(root)