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

2024-04-25 21:39:00 发布

您现在位置:Python中文网/ 问答频道 /正文

这是主应用程序:

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

    

Tags: textnameposappsizeconnectionsqlite3color
1条回答
网友
1楼 · 发布于 2024-04-25 21:39:00

解决方案

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

main.py

需要将self添加到方法vinyl_add,因为它被定义为MDApp类的方法

片段

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

kv文件

  1. ids添加到MDTextField:以便引用它们

片段

    MDTextField:
        id: composer
        hint_text:"Composer Name"
        ...
    MDTextField:
        id: song
        hint_text:"Song Name"
        ...
    MDTextField:
        id: album
        hint_text:"Alboum Name"
  1. MDTextField:的文本值作为参数传递给函数调用

片段

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

输出:

KivyMD应用程序-添加乙烯基

KivyMD - Add Vinyl

SQLite数据库:vinyl.db

vinyl.db

相关问题 更多 >