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)