在这里我创建了一个小项目,用户通过 addproducts 选项卡在数据库中添加产品,数据表显示产品,点击按钮时表格会自行刷新
你必须相应地修改代码
希望这会有所帮助
main.py
from kivymd.app import MDApp
from kivy.lang import Builder
from kivymd.uix.tab import MDTabsBase
from kivymd.uix.floatlayout import MDFloatLayout
from kivymd.uix.datatables import MDDataTable
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.screenmanager import ScreenManager
from kivy.metrics import dp
import mysql.connector
from kivy.core.window import Window
Window.size =(350,600)
class Tab1(MDFloatLayout, MDTabsBase):
def product_lists(self, *args):
database = mysql.connector.connect(host="localhost" , user ="root" , password= "dumbre1902", database="localvendor")
cursor = database.cursor()
sql_select_Query = "select * from addproduct"
cursor.execute(sql_select_Query)
# get all records
records = cursor.fetchall()
layout = AnchorLayout()
self.product_table = MDDataTable(
pos_hint={'center_y': 0.41, 'center_x': 0.5},
size_hint=(0.9, 0.78),
elevation= 15,
rows_num = 100,
column_data=[
("Product Name", dp(25)),
("MRP", dp(15)),
("Quantity", dp(20)),
("Product Description", dp(30)),
],
row_data=[
(f"{row[0]}", f"{row[1]}", f"{row[2]}", f"{row[3]}") for row in records
],
)
self.add_widget(self.product_table)
return layout
def on_enter(self):
self.product_lists()
class Tab2(MDFloatLayout, MDTabsBase):
pass
class DemoApp(MDApp):
def build(self):
sm = ScreenManager()
sm.add_widget(Builder.load_file("testwidgets.kv"))
return sm
DemoApp().run()
testwidgets.kv
#:import Snackbar kivymd.uix.snackbar.Snackbar
MDScreen:
name: 'sellerprofile'
MDNavigationLayout:
size : root.width, root.height
ScreenManager:
id: screen_manager
Screen:
name: "mddatatable"
BoxLayout:
orientation: 'vertical'
MDToolbar:
id: toolbar
title: "LOCAL VENDOR"
md_bg_color: 60/255, 194/255, 89/255, 1
MDTabs:
lock_swiping: True
font_name: "fonts/Product Sans Regular.ttf"
background_color: 60/255, 194/255, 89/255, 1
Tab1:
title: "Products"
Tab2:
title: "Add Products"
<Tab1>:
MDRaisedButton:
elevation: 13
font_size: "16sp"
size_hint: .4, .1
text_color: 0/255,0/255,0/255,1
md_bg_color: 60/255, 194/255, 89/255, 1
text: 'See Products'
on_press:
root.on_enter()
Snackbar(text="Tap again to see recently added products",snackbar_x="10dp",snackbar_y="10dp",size_hint_x=.9,).open()
pos_hint: {'center_x': .5, 'center_y': .9}
font_name: "fonts/Product Sans Regular.ttf"
<Tab2>:
MDFloatLayout:
size_hint: .70, .03
pos_hint: {"center_x": .5,"center_y": .83}
MDTextField:
id : productname
hint_text: "Product Name"
mode: "rectangle"
pos_hint: {"center_x": .5,"center_y": .5}
MDFloatLayout:
size_hint: .30, .03
pos_hint: {"center_x": .3,"center_y": .7}
MDTextField:
id: mrp
hint_text: "MRP"
mode: "rectangle"
pos_hint: {"center_x": .5,"center_y": .5}
input_filter: 'int'
MDFloatLayout:
size_hint: .30, .03
pos_hint: {"center_x": .6,"center_y": .7}
MDTextField:
id: quantity
hint_text: "Quantity"
mode: "rectangle"
pos_hint: {"center_x": .82,"center_y": .5}
MDFloatLayout:
size_hint: .70, .03
pos_hint: {"center_x": .5,"center_y": .57}
MDTextField:
id: productdescription
hint_text: "Product Description (optional)"
mode: "rectangle"
multiline: True
pos_hint: {"center_x": .5,"center_y": .5}
MDRaisedButton:
text: "Add Product"
elevation: 15
size_hint: .5, .1
font_size: "18sp"
text_color: 0/255,0/255,0/255,1
md_bg_color: 60/255, 194/255, 89/255, 1
md_bg_color_disabled: 222/255, 222/255, 222/255, 1
pos_hint: {"center_x": .5,"center_y": .3}
font_name: "fonts/Product Sans Regular.ttf"
disabled: True if (productname.text and mrp.text) == '' else False
on_release:
app.addproduct( productname, mrp , quantity , productdescription )
app.show_product_added()