Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当用户单击“添加”按钮时,如何从用户处获取数据?_Python_Sqlite_Kivy_Kivymd - Fatal编程技术网

Python 当用户单击“添加”按钮时,如何从用户处获取数据?

Python 当用户单击“添加”按钮时,如何从用户处获取数据?,python,sqlite,kivy,kivymd,Python,Sqlite,Kivy,Kivymd,这是主应用程序: 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

这是主应用程序:

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() 
以下是kivy文件代码:

主屏幕

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]
还有按钮

    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()

    
解决方案 使用
ids
引用
MDTextField
。对Python脚本和kv文件进行以下更改

main.py 需要将
self
添加到方法
中,因为它被定义为
MDApp
类的方法

片段 kv文件
  • ids
    添加到
    MDTextField:
    以便引用它们
  • 片段
  • MDTextField:
    的文本值作为参数传递给函数调用
  • 片段 输出: KivyMD应用程序-添加乙烯基

    SQLite数据库:
    乙烯基.DB

    MDRaisedButton:text:“添加”pos\u hint:{“center\u x”:.5,“center\u y”:.23}大小\u hint\u x:0.3文本\u颜色:1,1,1,1,1 md\u bg\u颜色:[0/255,200/255,0/255,1]按以下按钮:app.vinyly\u ADD()这是主屏幕的
    添加
    按钮部分?@JohnAnderson是的,但我如何将其插入数据库。调用方法
    乙烯基添加(…)
    时,它将添加到数据库
    乙烯基.db
        def vinyl_add(self, name, alboum, song):
            print(name, alboum, song)
            ...
    
        MDTextField:
            id: composer
            hint_text:"Composer Name"
            ...
        MDTextField:
            id: song
            hint_text:"Song Name"
            ...
        MDTextField:
            id: album
            hint_text:"Alboum Name"
    
        MDRaisedButton:
            text:"ADD"
            ...
            on_press: app.vinyl_add(composer.text, album.text, song.text)