AttributeError: 'MyApp' object has no attribute 'btn_press'

VladPy

Новичок
Пользователь
Апр 17, 2020
4
1
3
Python:
#импорты

from kivy.app import App

from kivy.uix.button import Button

from kivy.config import Config

from kivy.uix.floatlayout import FloatLayout

from kivy.uix.codeinput import CodeInput

from pygments.lexers import HtmlLexer



#resizable что мы меняем/0 окно невозможно сделать на весь экран

Config.set('graphics', 'resizable', '0');

Config.set('graphics', 'width', '640');

Config.set('graphics', 'height', '480');

#Создание класса приложения

class MyApp(App):

    def build(self):



        fl = FloatLayout(size = (300, 300))

        fl.add_widget(Button(text = "My first button",

            font_size = 30,

            on_press = self.btn_press,

            background_color = [.32, .85, .94, 1],

            background_normal = '',

            size_hint = (.5, .25),

            pos = (0, 0)));

       

        return fl



def btn_press(self, instance):

    print("Button is pressed")

    instance.text = "I am pressed"



 

if __name__ == "__main__":

    MyApp().run()
 
Последнее редактирование модератором:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
У вас в коде метод btn_press написал вне класса myapp. Нужно поместить его внутрь класса.

Python:
#импорты
from kivy.app import App
from kivy.uix.button import Button
from kivy.config import Config
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.codeinput import CodeInput
from pygments.lexers import HtmlLexer

#resizable что мы меняем/0 окно невозможно сделать на весь экран
Config.set('graphics', 'resizable', '0');
Config.set('graphics', 'width', '640');
Config.set('graphics', 'height', '480');
#Создание класса приложения
class MyApp(App):
    def build(self):

        fl = FloatLayout(size = (300, 300))
        fl.add_widget(Button(text = "My first button",
        font_size=30,
        on_press=self.btn_press,
        background_color=[.32, .85, .94, 1],
        background_normal='',
        size_hint = (.5, .25),
        pos = (0, 0)))
        return fl

    def btn_press(self, instance):
        print("Button is pressed")
        instance.text = "I am pressed"


if __name__ == "__main__":
    MyApp().run()
 
  • Мне нравится
Реакции: Student и VladPy

VladPy

Новичок
Пользователь
Апр 17, 2020
4
1
3
У вас в коде метод btn_press написал вне класса myapp. Нужно поместить его внутрь класса.

Python:
#импорты
from kivy.app import App
from kivy.uix.button import Button
from kivy.config import Config
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.codeinput import CodeInput
from pygments.lexers import HtmlLexer

#resizable что мы меняем/0 окно невозможно сделать на весь экран
Config.set('graphics', 'resizable', '0');
Config.set('graphics', 'width', '640');
Config.set('graphics', 'height', '480');
#Создание класса приложения
class MyApp(App):
    def build(self):

        fl = FloatLayout(size = (300, 300))
        fl.add_widget(Button(text = "My first button",
        font_size=30,
        on_press=self.btn_press,
        background_color=[.32, .85, .94, 1],
        background_normal='',
        size_hint = (.5, .25),
        pos = (0, 0)))
        return fl

    def btn_press(self, instance):
        print("Button is pressed")
        instance.text = "I am pressed"


if __name__ == "__main__":
    MyApp().run()
Спасибо большое за помощь а то около часа искал ошибку а она такая элементарная и заметная:)
 
  • Мне нравится
Реакции: Student

Student

throw exception
Команда форума
Администратор
Апр 2, 2020
195
103
43
Москва
@VladPy не забудьте выбрать ответ выше как лучший. Для этого нужно нажать слева от ответа на иконку трофея.
 
  • Мне нравится
Реакции: VladPy

Форум IT Специалистов