SESI 03 : MEMBUAT FORM INPUT DATA BARANG
Assalamualaikum warahmatullohi wabarohatuh, salam sukses mari kita lanjutkan coding kita, disesi yang ke 3 (bagian ke tiga) ini kita akan membuat halaman untuk input / entry / menambah data data master barang, rencana tampilan seperti ini.
Disini kita harus membuat form atau halaman khusus untuk input data barang,
adapun item-item yang akan kita masukkan adalan jenis barang meliputi ( 1 -
kode untuk jenis makanan atau food, 2 - kode untuk minuman dan 3 - kode
untuk snack atau cemilan ), bentuk dasar rancangan akan kita buat seperti
ini :
Jadi kita harus membuat file kivy khusus untuk membuat form atau halaman
diatas, misalnya kita kasih nama barang_new.kv serta untuk
mengontrol form tersebut kita juga harus membuat class baru difile
python main.py yaitu misalnya kita kasih nama
class BarangNew(Screen), dengan 2 (dua) buang fungsi atau metod
pengontrol simpan dan tampilkan gambar barang :
class BarangNew(Screen):
def tampilkan_gambar(self,lokasi):
self.ids.cetakgambar.source=lokasi
def simpan(self):
isidata = []
isijenis= self.ids.jenis.text.strip()
isinama = self.ids.nama.text.strip()
isiharga= self.ids.harga.text.strip()
isigambar= self.ids.gambar.text.strip()
isidata.append(isijenis)
isidata.append(isinama)
isidata.append(isiharga)
isidata.append(isigambar)
isidata.append('kosong')
daftarbarang.append(isidata)
self.manager.transition.direction = 'right'
self.manager.current = 'MenuBarang'
Jangan lupa panggil file kivynya agar bisa dibaca yaitu kita insert/link-kan
dalam file python dengan perintah Builder.load_file('barang_new.kv'), serta didalam manajemen layarnya
kita tambahi untuk pengontrol class tersebut misalnya sm.add_widget(BarangNew(name='BarangNew')
jadi kalau dituliskan manajemen screen langkapnya seperti ini :
sm = ScreenManager()
sm.add_widget(MenuUtama(name='MenuUtama'))
sm.add_widget(MenuBarang(name='MenuBarang'))
sm.add_widget(BarangNew(name='BarangNew'))
return sm
Secara lengkapnya scrip programnya menjadi :
File python : main.py
from kivy.lang
import Builder
from kivy.core.window
import Window
from kivy.uix.screenmanager
import ScreenManager,Screen
from kivy.properties
import StringProperty
from kivymd.app
import MDApp
from kivymd.uix.floatlayout
import MDFloatLayout
Window.size = (400,600)
Builder.load_file('menu.kv')
Builder.load_file('barang.kv')
Builder.load_file('barang_item.kv')
Builder.load_file('barang_new.kv')
# jenis nama item
harga lokasi gambar status
daftarbarang=[['1','Food No. 01','25000','image/food01.png','Kososng'],
['1','Food No. 02','25000','image/food02.png','Kososng'],
['1','Food No. 03','20000','image/food03.png','Kososng'],
['2','Drink No. 01','7000','image/drink01.png','Kososng'],
['3','Snack No. 01','15000','image/snack01.png','Kososng'],
]
class
MenuUtama(Screen):
def
buka_menubarang(self):
self.manager.transition.direction
=
'left'
self.manager.current
=
'MenuBarang'
class
BarangItem(MDFloatLayout):
jenis = StringProperty
("Item Food")
nama = StringProperty
("Food No: 01")
harga = StringProperty
('10000')
gambar = StringProperty
("image/food01.png")
class
BarangNew(Screen):
def
tampilkan_gambar(self,lokasi):
self.ids.cetakgambar.source=lokasi
def
simpan(self):
isidata
= []
isijenis=
self.ids.jenis.text.strip()
isinama
=
self.ids.nama.text.strip()
isiharga=
self.ids.harga.text.strip()
isigambar=
self.ids.gambar.text.strip()
isidata.append(isijenis)
isidata.append(isinama)
isidata.append(isiharga)
isidata.append(isigambar)
isidata.append('kosong')
daftarbarang.append(isidata)
self.manager.transition.direction
=
'right'
self.manager.current
=
'MenuBarang'
class
MenuBarang(Screen):
def
on_pre_enter(self):
self.ids.gridbarang.clear_widgets()
self.tampil_barang()
def
tampil_barang(self):
jmldata=len(daftarbarang)
for i
in
range(jmldata):
item=BarangItem()
if daftarbarang[i][0]=='1': item.jenis='Item Food'
if daftarbarang[i][0]=='2': item.jenis='Item Drink'
if daftarbarang[i][0]=='3': item.jenis='Item Snack'
item.nama=daftarbarang[i][1]
item.harga=daftarbarang[i][2]
item.gambar=daftarbarang[i][3]
self.ids.gridbarang.add_widget(item)
return
self
class
MyResto(MDApp):
def
build(self):
sm
= ScreenManager()
sm.add_widget(MenuUtama(name='MenuUtama'))
sm.add_widget(MenuBarang(name='MenuBarang'))
sm.add_widget(BarangNew(name='BarangNew'))
return sm
MyResto().run()
file kivy : barang_new.kv
<BarangNew>:
MDBoxLayout:
size_hint:
1,.1
pos_hint:
{'x':0,'y':.9}
md_bg_color: rgba(0, 0,
255,
255)
MDLabel:
text:
'ENTRY ITEM BARANG'
color: rgba(255, 255,
255,
255)
halign:
"center"
font_size:
'30dp'
bold:
True
MDFloatLayout:
size_hint:
1,.8
pos_hint:
{'x':0,'y':.1}
md_bg_color: rgba(255, 255,
255,
255)
MDLabel:
text:
'Jenis Item'
text_color:
0,
0,
0,
1
size_hint: .3, .1
pos_hint: {"x":.1,
"y": .8}
MDTextField:
id:jenis
size_hint_x: .1
pos_hint: {"x":.4,
"y": .8}
MDLabel:
text:
'Nama Item'
text_color:
0,
0,
0,
1
size_hint: .3, .1
pos_hint: {"x":.1,
"y": .7}
MDTextField:
id:nama
size_hint_x: .5
pos_hint: {"x":.4,
"y": .7}
MDLabel:
text:
'Harga Item'
text_color:
0,
0,
0,
1
size_hint: .3, .1
pos_hint: {"x":.1,
"y": .6}
MDTextField:
id:harga
size_hint_x: .5
pos_hint: {"x":.4,
"y": .6}
MDLabel:
text:
'Alamat Gambar'
text_color:
0,
0,
0,
1
size_hint: .3, .1
pos_hint: {"x":.1,
"y": .5}
MDTextField:
id:gambar
size_hint_x: .5
pos_hint: {"x":.4,
"y": .5}
on_text:
root.tampilkan_gambar(self.text)
MDBoxLayout:
size_hint: .4,.3
line_color: rgba(0, 0,
0,
255)
pos_hint: {'center_x':.5,'y':.1}
FitImage:
id:cetakgambar
source:
''
MDBoxLayout:
size_hint:
1,.1
pos_hint:
{'x':0,'y':0}
md_bg_color: rgba(0, 255,
0,
255)
orientation:
'horizontal'
MDRectangleFlatButton:
text:
"Batal"
text_color: rgba(0, 0,
255,
255)
line_color: rgba(0, 0,
255,
255)
md_bg_color: rgba(255, 255,
0,
255)
size_hint_x: .5
pos_hint: {"center_x": .5,
"center_y": .5}
on_release:
root.manager.transition.direction =
'right'
root.manager.current =
'MenuBarang'
MDRectangleFlatButton:
text:
"Simpan"
text_color: rgba(0, 0,
255,
255)
line_color: rgba(0, 0,
255,
255)
md_bg_color: rgba(255, 255,
0,
255)
size_hint_x: .5
pos_hint: {"center_x": .5,
"center_y": .5}
on_release:
root.simpan()
file kivy : barang.kv
difile kivy menu master barang ini yang diubah/ditambahi perintah adalah
diobject icon button yang tombol plus agar bisa link dengan file kivy
barang_new.kv, jadi file menu master barang menjadi :
<MenuBarang>:
MDBoxLayout:
size_hint:
1,.1
pos_hint:
{'x':0,'y':.9}
md_bg_color: rgba(250, 250,
0,
150)
MDLabel:
text:
'DAFTAR ITEM'
halign:
"center"
color: rgba(0, 0,
255,
255)
font_size:
'30dp'
MDBoxLayout:
size_hint:
1,.9
pos_hint:
{'x':0,'y':0}
ScrollView:
id: layarbarang
size_hint_x:
self.size_hint_x
size_hint_y:
self.size_hint_y
do_scroll_x:
False
MDGridLayout:
id: gridbarang
cols:
2
row_default_height:
200
row_force_default:
True
adaptive_height:
True
padding: dp(30), dp(30)
spacing: dp(30)
MDIconButton:
icon:
"plus"
md_bg_color: rgba(0, 0,
250,
255)
pos_hint:
{'x':.85,'y':.03}
on_release:
root.manager.transition.direction =
'left'
root.manager.current =
'BarangNew'
MDIconButton:
icon:
"select-group"
md_bg_color: rgba(0, 0,
250,
255)
pos_hint:
{'x':.03,'y':.03}
on_release:
root.manager.transition.direction =
'left'
root.manager.current =
'MenuUtama'
Demikian sesi ketigaini yang kita buat dengan harapan agar mudah
dipahami, untuk lebih detailnya bisa lihat tutorial videonya, karena kita
masih sama2 masih belajar kalau ada kesalahan saya mohon maaf dan semoga
bermanfaat.
Komentar
Posting Komentar