GiwrgosLeivadias
GiwrgosLeivadias

Reputation: 11

how can i get data from user when he click the add button?

this is the main app:

from kivymd.app import MDApp
import sqlite3

class Vinylapp(MDApp):
    connection = None
    cur = None
    connection = sqlite3.connect("vinyl.db")
    cur = connection.cursor()
    cur.execute("""CREATE TABLE  IF NOT EXISTS Vinyl(
        name TEXT,
        alboum TEXT,
        song TEXT)
        """)        
    connection.commit()
    connection.close()

    def vinyl_add(name,alboum,song):
        connection = sqlite3.connect("vinyl.db")
        cur = connection.cursor()
        connection.execute("INSERT INTO Vinyl VALUES (?,?,?)",(name, alboum, song))
        connection.commit()
        connection.close()
Vinylapp().run() 

and here is the kivy file code:

main screen

MDScreen:
    bg: app.theme_cls.bg_light
    MDToolbar:
        id: toolbar
        pos_hint: {"bottom": 1}
        title: "Search By Name "
        elevation: 10
        md_bg_color: [0/255, 200/255, 0/255, 1]
        right_action_items: [['magnify', lambda x: app.search_menu.app]]
    MDLabel:
        text:"ADD VINYL"
        halign:"center"
        font_style: "Button"
        font_size: 20
        pos_hint:{"center_x":.5,"center_y":.8}
    MDTextField:  
        hint_text:"Composer Name"
        pos_hint: {"center_x":0.5, "center_y":0.6}
        size_hint_x:.3
        current_hint_text_color: 0, 0, 0, 1
        color_mode: 'custom'
        line_color_focus: [0/255, 200/255, 0/255, 1]
    MDTextField:
        hint_text:"Song Name"
        pos_hint: {"center_x":0.5, "center_y":0.4}
        size_hint_x:.3
        current_hint_text_color: 0, 0, 0, 1
        color_mode: 'custom'
        line_color_focus: [0/255, 200/255, 0/255, 1]
    MDTextField: 
        hint_text:"Alboum Name"
        pos_hint: {"center_x":0.5, "center_y":0.5}
        size_hint_x:.3
        current_hint_text_color: 0, 0, 0, 1
        color_mode: 'custom'
        line_color_focus: [0/255, 200/255, 0/255, 1]

and the button

    MDRaisedButton:
        text:"ADD"
        pos_hint: {"center_x":.5, "center_y":.23}
        size_hint_x: 0.3
        text_color: 1, 1, 1, 1
        md_bg_color: [0/255, 200/255, 0/255, 1]
        on_press: app.vinyl_add()

    

Upvotes: 1

Views: 280

Answers (1)

ikolim
ikolim

Reputation: 16031

Solution

Use ids to reference the MDTextField. Make the following changes to the Python script and kv file.

main.py

Need to add self into method vinyl_add because it is defined as a method of the MDApp class.

Snippets

    def vinyl_add(self, name, alboum, song):
        print(name, alboum, song)
        ...

kv file

  1. Add ids to the MDTextField: so that you are reference them.

Snippets

    MDTextField:
        id: composer
        hint_text:"Composer Name"
        ...
    MDTextField:
        id: song
        hint_text:"Song Name"
        ...
    MDTextField:
        id: album
        hint_text:"Alboum Name"
  1. Pass the text value of the MDTextField: as parameters to the function call.

Snippets

    MDRaisedButton:
        text:"ADD"
        ...
        on_press: app.vinyl_add(composer.text, album.text, song.text)

Output:

KivyMD App - Add Vinyl

KivyMD - Add Vinyl

SQLite DB: vinyl.db

vinyl.db

Upvotes: 1

Related Questions