Skip to content

Instantly share code, notes, and snippets.

@smith0022
Created March 13, 2022 12:50
Show Gist options
  • Save smith0022/5077f4807ed54d458a89832a925cceb3 to your computer and use it in GitHub Desktop.
Save smith0022/5077f4807ed54d458a89832a925cceb3 to your computer and use it in GitHub Desktop.
sample for kivy
from kivymd.app import MDApp
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition
from kivy.lang import Builder
from kivymd.uix.datatables import MDDataTable
from kivy.metrics import dp
from kivy.uix.anchorlayout import AnchorLayout
from kivy.properties import ObjectProperty
from kivymd.uix.screen import MDScreen
Builder.load_file("welcome.kv")
import mysql.connector as sql
details = {}
connect = sql.connect(host= 'localhost' ,user = 'root',password = "Smith@007" ,database='courier_service_system' )
sqlcursor = connect.cursor()
sqlcursor.execute("select * from billings")
billings_detail = sqlcursor.fetchall()
for x in range(1,len(billings_detail)+1):
billings_detail[x-1] = (x,)+billings_detail[x-1]
sqlcursor.execute("select * from login")
details_list = sqlcursor.fetchall()
for x in details_list:
x = list(x)
username, password = x[1], x[2]
details[username] = password
sqlcursor.execute("select * from employee_table")
employee_detail = sqlcursor.fetchall()
sqlcursor.execute("select * from courier_order")
courier_order = sqlcursor.fetchall()
connect.commit()
sqlcursor.close()
connect.close()
class Login_page(Screen):
def validate_user(self):
self.sm = ScreenManager(transition=NoTransition())
import mysql.connector as sql
details = {}
connect = sql.connect(host='localhost', user='root', password="Smith@007", database='courier_service_system')
sqlcursor = connect.cursor()
sqlcursor.execute("select * from billings")
billings_detail = sqlcursor.fetchall()
for x in range(1, len(billings_detail) + 1):
billings_detail[x - 1] = (x,) + billings_detail[x - 1]
sqlcursor.execute("select * from login")
details_list = sqlcursor.fetchall()
for x in details_list:
x = list(x)
username, password = x[1], x[2]
details[username] = password
connect.commit()
sqlcursor.close()
connect.close()
Username = MainApp.get_running_app().root.get_screen('Login_Page').ids.Username.text
print(details)
print(details[Username])
if Username in list(details.keys()):
print(MainApp.get_running_app().root.get_screen('Login_Page').ids.Password.text)
if details[Username] == MainApp.get_running_app().root.get_screen('Login_Page').ids.Password.text:
self.parent.current = "Main_page"
else:
print("not here")
class Employee_Table(Screen):
def load_table(self):
self.sm = ScreenManager(transition=NoTransition())
layout = AnchorLayout()
self.sm.data_tables = MDDataTable(
use_pagination = True,
check = False,
rows_num = 8,
column_data = [
(" Employee number ",dp(40)),
(" City ", dp(35)),
(" Name ", dp(35)),
(" Mobile Number ", dp(40)),
],
row_data = employee_detail,
elevation=2,
pos_hint={'center_x': 0.5, 'center_y': 0.47},
size_hint=(1, 0.85)
)
self.add_widget(self.sm.data_tables)
return layout
def on_enter(self):
self.load_table()
class Employee_Table_order(Screen):
def load_table(self):
global Address
self.employee = ""
self.sm = ScreenManager(transition=NoTransition())
layout = AnchorLayout()
employee_details = []
for i in employee_detail:
if Address == i[1]:
employee_details.append(i)
else:
pass
self.sm.data_tables = MDDataTable(
use_pagination = True,
check = True,
rows_num = 8,
column_data = [
(" Employee number ",dp(40)),
(" City ", dp(35)),
(" Name ", dp(35)),
(" Mobile Number ", dp(50)),
],
row_data = employee_details,
elevation=2,
pos_hint={'center_x': 0.5, 'center_y': 0.47},
size_hint=(1, 0.85)
)
self.sm.data_tables.bind(on_row_press=self.on_row_press)
self.add_widget(self.sm.data_tables)
return layout
def on_enter(self):
self.load_table()
def on_row_press(self, instance_table, instance_row):
'''Called when a table row is clicked.'''
global employee_name
self.employee += str(employee_detail[int(instance_row.children[1].children[0].children[0].text)-1][2])
employee_name = self.employee
def on_leave(self, *args):
global employee_name
print(self.employee)
employee_name = self.employee
print(employee_name)
class Sign_in_Page(Screen):
def Signing_in(self):
import mysql.connector as sql
connect = sql.connect(host='localhost', user='root', password="Smith@007", database='courier_service_system')
sqlcursor = connect.cursor()
self.sm = ScreenManager(transition=NoTransition())
Username = MainApp.get_running_app().root.get_screen('Sign_in_Page').ids.Username.text
Password = MainApp.get_running_app().root.get_screen('Sign_in_Page').ids.Password.text
C_code = details_list[-1][0] + 1
sqlcursor.execute(f'insert into login values({C_code},"{Username}","{Password}")')
connect.commit()
sqlcursor.close()
connect.close()
self.parent.current = "Login_Page"
class Main_page(Screen):
pass
class Courier_Order_and_Details(Screen):
pass
class Place_Order(Screen):
def place_the_order(self):
global ord_num
global Address
global Number
global name
name = MainApp.get_running_app().root.get_screen('Place_Order').ids.name.text
Address = MainApp.get_running_app().root.get_screen('Place_Order').ids.Address.text
Number = MainApp.get_running_app().root.get_screen('Place_Order').ids.Number.text
ord_num = courier_order[-1][0]+1
self.parent.current = "Billings_Table_order"
class Courier_details_startup(Screen):
def See_the_order(self):
global ord_num
global Name
import mysql.connector as sql
connect = sql.connect(host='localhost', user='root', password="Smith@007", database='courier_service_system')
sqlcursor = connect.cursor()
sqlcursor.execute("select * from courier_order")
courier_order = sqlcursor.fetchall()
connect.commit()
sqlcursor.close()
connect.close()
self.sm = ScreenManager(transition=NoTransition())
ord_num = MainApp.get_running_app().root.get_screen('Courier_details_startup').ids.Order_number.text
Name = MainApp.get_running_app().root.get_screen('Courier_details_startup').ids.Name.text
for x in courier_order:
print([int(ord_num), str(Name)] == list(x[:2]))
if [int(ord_num), str(Name)] == list(x[:2]):
self.parent.current = "Courier_details"
break
else:
self.parent.current = "Main_page"
class Courier_details(Screen):
def load_table(self):
global ord_num
self.sm = ScreenManager(transition=NoTransition())
layout = AnchorLayout()
import mysql.connector as sql
connect = sql.connect(host='localhost', user='root', password="Smith@007", database='courier_service_system')
sqlcursor = connect.cursor()
sqlcursor.execute("select * from courier_order")
courier_order = sqlcursor.fetchall()
connect.commit()
sqlcursor.close()
connect.close()
courier_order0 = []
for i in courier_order:
if int(ord_num) == i[0]:
print(courier_order0)
courier_order0.append(i)
else:
pass
courier_order0 += [("","","","","","","")]
self.sm.data_tables = MDDataTable(
use_pagination=True,
rows_num=8,
column_data=[
(" Order no ", dp(20)),
(" Customer name ", dp(23)),
(" Customer Num ", dp(23)),
("Customer City", dp(23)),
("Total Cost", dp(20)),
("Status", dp(23)),
("Dilvery person",dp(25))
],
row_data = courier_order0,
elevation=2,
pos_hint={'center_x': 0.5, 'center_y': 0.5},
size_hint = (1, 0.83)
)
self.add_widget(self.sm.data_tables)
return layout
def on_enter(self):
self.load_table()
class Billings_Table_order(Screen):
def load_table(self):
self.Tcost = 0
self.sm = ScreenManager(transition=NoTransition())
layout = AnchorLayout()
self.sm.data_tables = MDDataTable(
use_pagination=True,
check=True,
rows_num=8,
column_data=[
(" Sr.no ", dp(50)),
(" Weight ", dp(50)),
(" Price(in dihrams) ", dp(50)),
],
row_data=billings_detail,
elevation=2,
pos_hint={'center_x': 0.5, 'center_y': 0.47},
size_hint = (1, 0.85)
)
self.sm.data_tables.bind(on_row_press = self.on_row_press)
self.add_widget(self.sm.data_tables)
return layout
def on_enter(self):
self.load_table()
def on_row_press(self, instance_table, instance_row):
'''Called when a table row is clicked.'''
self.Tcost += int(billings_detail[int(instance_row.children[1].children[0].children[0].text) - 1][2])
def on_leave(self, *args):
try :
global Tcost
Tcost = self.Tcost
except:
print("data not found !")
class ThankYou(Screen):
pass
class Billings_Table(Screen):
def load_table(self):
self.weight = 0
self.Tcost = 0
self.sm = ScreenManager(transition=NoTransition())
layout = AnchorLayout()
self.sm.data_tables = MDDataTable(
use_pagination=True,
check=False,
rows_num=8,
column_data=[
(" Sr.no ", dp(50)),
(" Weight ", dp(50)),
(" Price(in dihrams) ", dp(50)),
],
row_data=billings_detail,
elevation=2,
pos_hint={'center_x': 0.5, 'center_y': 0.47},
size_hint = (1, 0.85)
)
self.add_widget(self.sm.data_tables)
return layout
def on_enter(self):
self.load_table()
# class ScreenManagement(ScreenManager):
# pass
class see_details(Screen):
def load_table(self):
global ord_num,name,Number,Address,Tcost,employee_name
self.sm = ScreenManager(transition=NoTransition())
layout = AnchorLayout()
courier_order0 = [(ord_num,name,Number,Address,Tcost,"not delivered",employee_name)]
courier_order0 += [("","","","","","","")]
self.sm.data_tables = MDDataTable(
use_pagination=True,
rows_num=8,
column_data=[
(" Order no ", dp(20)),
(" Customer name ", dp(23)),
(" Customer Num ", dp(23)),
("Customer City", dp(23)),
("Total Cost", dp(20)),
("Status", dp(23)),
("Dilvery person",dp(25))
],
row_data = courier_order0,
elevation=2,
pos_hint={'center_x': 0.5, 'center_y': 0.5},
size_hint = (1, 0.83)
)
self.add_widget(self.sm.data_tables)
return layout
def on_enter(self):
self.load_table()
def on_leave(self, *args):
import mysql.connector as sql
global ord_num,name,Number,Address,Tcost,employee_name
connect = sql.connect(host='localhost', user='root', password="Smith@007", database='courier_service_system')
sqlcursor = connect.cursor()
sqlcursor.execute(f'insert into courier_order values({ord_num},"{name}",{Number},"{Address}",{Tcost},"not delivered","{employee_name}")')
connect.commit()
sqlcursor.close()
connect.close()
class MainApp(MDApp):
def build(self):
self.sm = ScreenManager(transition=NoTransition())
self.sm.add_widget(Login_page(name = "Login_Page"))
self.sm.add_widget(Sign_in_Page(name = "Sign_in_Page"))
self.sm.add_widget(Main_page(name = "Main_page"))
self.sm.add_widget(Billings_Table(name = "Billings_Table"))
self.sm.add_widget(Billings_Table_order(name="Billings_Table_order"))
self.sm.add_widget(Employee_Table(name = "Employee_Table"))
self.sm.add_widget(Employee_Table_order(name="Employee_Table_order"))
self.sm.add_widget(Courier_Order_and_Details(name = "Courier_Order_and_Details"))
self.sm.add_widget(Place_Order(name="Place_Order"))
self.sm.add_widget(Courier_details(name="Courier_details"))
self.sm.add_widget(see_details(name="see_details"))
self.sm.add_widget(Courier_details_startup(name="Courier_details_startup"))
self.sm.add_widget(ThankYou(name="ThankYou"))
return self.sm
def change_screen(self, tela):
self.sm.current = tela
if __name__ == "__main__":
MainApp().run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment