Created
March 13, 2022 12:50
-
-
Save smith0022/5077f4807ed54d458a89832a925cceb3 to your computer and use it in GitHub Desktop.
sample for kivy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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