Python programını apk yapmak

merhaba ben kivy ve pyodbc kullanarak bir program yaptım fakat bir türlü apk yapamıyorum araştırmadığım kaynak kalmadı google collab üzerinden denemeler yaptım fakat hep hata verdi(not:buildozer kullanarak denedim)yardım lazım.

Bunun ne olduğunu bilmiyorum ? Mobil ile uyumlu mu ?

Allah Allah :smiley:

Colab için eski notlarımdaki bir scripti atayım belki işini görür. Bu kodları a dosyasının içine kaydet. Colaba yükle ve terminale şunları yaz.

!chmod +x a
!./a

Buildozer spec dosyasına kullandığın bütün kütüphaneleri eklemen gerekiyor.

requirements = python3,kivy==2.1.0,https://github.com/kivymd/KivyMD/archive/master.zip,pyodbc böyle olabilir veya olmayabilir adını bulman lazım.
!apt install python3
!apt install python3-pip
!pip install buildozer
!pip install kivy
!pip install kivymd
!pip install cython==0.29.19

!sudo apt-get install -y \
    python3-pip \
    build-essential \
    git \
    python3 \
    python3-dev \
    ffmpeg \
    libsdl2-dev \
    libsdl2-image-dev \
    libsdl2-mixer-dev \
    libsdl2-ttf-dev \
    libportmidi-dev \
    libswscale-dev \
    libavformat-dev \
    libavcodec-dev \
    zlib1g-dev
    
!sudo apt-get install -y \
    libgstreamer1.0 \
    gstreamer1.0-plugins-base \
    gstreamer1.0-plugins-good

!sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev zlib1g-dev libssl-dev openssl libgdbm-dev libgdbm-compat-dev liblzma-dev libreadline-dev libncursesw5-dev libffi-dev uuid-dev libffi7

!sudo apt-get install libffi-dev

pyodbc sql a bağlanmaya yarayan bir kütüphane araştırdığımda mobilde çalışıyormuşda sanırım kivy yerine kivymd kullanılması gerekiyormuş bir bilginiz var mı?

Boş işler. Direkt olarak sqlite3 kullan. Kivy ile çok fazla sqlite3 kullanarak uygulama yaptım valla hiç sorun yaşamadım.

1 Beğeni

reis dc varsa bi konuşsak olur mu ya

Sen burdan yaz. Aynı sorunu yaşayan birileri varsa çözümü görürler belki. Database e ne kaydediyosun? Onun küçük kod örneğini yazsana.

import pyodbc
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
class MyApp(App):
    def build(self):
        # SQL Server
        db = pyodbc.connect('Driver={SQL Server};'
                              'Server=server;'
                              'Database=a;'
                              'Trusted_Connection=yes;')
        imlec = db.cursor()


        sütun2 = 'MUSTERI'
        sütun4 = 'SIPARIS_NO'
        sütun5 = 'YUKLEME_TARIHI'
        sütun6 = 'KUMAS_CINSI'
        sütun7 = 'URUN_ADI'
        sütun9 = 'BOYARENKNO'
        sütun10 = 'RENK'
        sütun12 = 'OLCU'
        sütun15 = 'GRAMAJ'
        sütun17 = 'KG'
        sütun18 = 'ADET'
        sütun19 = 'MT'
        sütun20 = 'dokTKG'
        sütun21 = 'dokTADET'
        sütun22 = 'dokTMT'
        sütun23 = 'dokunanKG'
        sütun24 = 'dokunanADET'
        sütun25 = 'dokunanMT'
        sütun26 = 'BOYGIDKG'
        sütun29 = 'BOY_GEL_NET_KG'
        sütun30 = 'BOY_GEL_BRUT_KG'
        sütun34 = 'KON_GKG'
        sütun38 = 'KON_GADET2'
        sütun39 = 'SIPARIS_DURUMU'
        sütun40 = 'SIPARIS_DURUMU_ZAMANI'

        sql_query = f'SELECT {sütun2},{sütun4},{sütun5},{sütun6},{sütun7},{sütun9},{sütun10},{sütun12},{sütun15},{sütun17},{sütun18},{sütun19},{sütun20},{sütun21},{sütun22},{sütun23},{sütun24},{sütun25},{sütun26},{sütun29},{sütun30},{sütun34},{sütun38},{sütun39},{sütun40} FROM SIPARIS_KAYIT'
    

        # Et

            
        # TextInput widget


        imlec.execute(sql_query)
        data = imlec.fetchall()

        def on_text(instance, value):
            # eşleşen satırları filtrele
            filtered_data = [row for row in data if value.lower() in row[0].lower()]
            # güncelle
            musterilabel.text = '\n'.join([str(row[0]) for row in filtered_data])
            siplabel.text = '\n'.join([str(row[1]) for row in filtered_data])
            yuktar.text = '\n'.join([str(row[2]) for row in filtered_data])
            kumc.text = '\n'.join([str(row[3]) for row in filtered_data])

        search_input = TextInput(text='müşteri ismi', multiline=False,size_hint=(0.25,0.05))
        search_input.bind(text=on_text)


        label2_text = '\n'.join([str(row[0]) for row in data])
        musterilabel = Label(text=label2_text)
        musteri = Label(text="Müşteri")

        label3_text = '\n'.join([str(row[1]) for row in data])
        siplabel = Label(text=label3_text)
        sipno = Label(text="Sipariş No.")

        label5_text = '\n'.join([str(row[2]) for row in data])
        yuktar = Label(text=label5_text)
        yuktarlabel = Label(text="Yükleme Tarihi")

        label6_text = '\n'.join([str(row[3]) for row in data])
        kumc = Label(text=label6_text)
        kumclabel = Label(text="Kumaş Cinsi")

        label7_text = '\n'.join([str(row[4]) for row in data])
        urunad = Label(text=label7_text)
        urunadlabel = Label(text="Ürün İsmi")






        musteribox = BoxLayout(orientation ='vertical')
        musteribox.add_widget(musteri)
        musteribox.add_widget(musterilabel)

        sipbox = BoxLayout(orientation ='vertical')
        sipbox.add_widget(sipno)
        sipbox.add_widget(siplabel)

        yuktarbox = BoxLayout(orientation ='vertical')
        yuktarbox.add_widget(yuktarlabel)
        yuktarbox.add_widget(yuktar)

        kumcbox = BoxLayout(orientation ='vertical')
        kumcbox.add_widget(kumclabel)
        kumcbox.add_widget(kumc)

        urunadbox = BoxLayout(orientation ='vertical')
        urunadbox.add_widget(urunadlabel)
        urunadbox.add_widget(urunad)






        box = BoxLayout(orientation='horizontal')
        box.add_widget(musteribox)
        box.add_widget(sipbox)
        box.add_widget(yuktarbox)
        box.add_widget(kumcbox)
        box.add_widget(urunadbox)





        box.add_widget(search_input)
        box.background_color = [1,1,0,1]
        return box
        
if __name__ == '__main__':
    MyApp().run()


ctrl+e içine yazsana okunmuyo

bu kodu apk yapıp mobilde çalıştırmam lazım ilk mobil projem

Database e elinle veri giriyomusun ?

istersem gire biliyiorum fakat oraya veriler başka bir programdan geliyor

şuan veri girişi yok sadace denemek için örnek 5-10 tane girdim

yazdığın koddan hiç bişey anlamadım. örnek bi tane kod yazdım. bunun üstünden git sende. Biraz fazla oldu galiba :smiley: Şimdi bak kodlar öle alt alta yazılmaz. Farklı dosyalara(classlara) ayırmak gerekiyor. Bu şekilde olduğunda hem kafa karışıklığı olmuyor. Ne nerde belli yani. 2. olarakta kvlang kullanmanı öneririm. Python syntax olarak yazmak hem okunaklı değil hemde çok gereksiz.
Database dosyasını çalıştırmak için terminalden sqlite3 kurupta yapabilirsin veya Sqlite Browser indirerekte database dosyasına ne kayıt edilmiş, herhangi bir sorun var mı bakabilirsin.

#main.py
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen

from page1 import Page1
from page2 import Page2

class Main(App):
    def build(self):
        sm = ScreenManager()
        sm.add_widget(Page1(name="page1"))
        sm.add_widget(Page2(name="page2"))
        return sm

Main().run()

#page1.py
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from database import Database

Builder.load_file("page1.kv")

class Page1(Screen):
    db = Database()

#page1.kv
<Page1>:
	BoxLayout:
		orientation: "vertical"
		TextInput:
			id: text1

		TextInput:
			id: text2

		Button:
			text: "Kayıt"
			on_press: root.db.add_data(text1.text, text2.text)


		Button:
			text: "Page2"
			on_press: root.manager.current = "page2"

#page2.py
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder

Builder.load_file("page2.kv")

class Page2(Screen):
    pass

#page2.kv
<Page2>:
	BoxLayout:
		Button:
			text: "Page2"
			on_press: root.manager.current = "page1"

#database.py
import sqlite3

class Database():
    db = sqlite3.connect("db.db")
    im = db.cursor()
    def __init__(self, *args):
        self.im.execute("CREATE TABLE IF NOT EXISTS Users (ad, soyad)")

    def add_data(self, *args):
        self.im.execute("INSERT INTO Users (ad, soyad) VALUES ({},{})".format(args[0], args[1]),)
        self.db.commit()

    def select_data(self):
        self.im.execute("SELECT * FROM Users")
        print(self.im.fetchall())

1 Beğeni

Yeni sütün ekleyeceksen database dosyasındaki (ad,soyad) kısmına yazıcaksın. örnek (ad,soyad,tel, adres) gibi

çok teşekkür ederim kivy de kendimi nasıl geliştiririm kaliteli bir kurs vb. var mı bildiğin?

kivy ile kendini geliştiremezsin :smiley: Çok ilkel yeni özellikler yok. Kivymd biraz daha iyi ama ondada bir sürü sorun var. Yazdığım kodu anlayabildin demi ? sorun olursa yaz. Yapı(mimari) bu şekilde yani. Sayfa geçişleri falan var. kayıt olduktan sonra başka sayfaya geçiyosun falan filan. Bundan daha iyisi yok :smiley: Kivy nin neresini öğrenmek istiyosun ki ?

benim amacım bir tane firma var daha önce proje yaptığım ordan gelen verileri mobil uygulamadan görmek istiyorum sadce ve filtrelemek bunun içinde gidip javascript öğrenmek mantıksız geldi

internetten veri çekip data base mi kaydedeceksin ?

yok veriler zaten database de var sql server 2008 de oradan verileri çekip mobil uygulamaya yazdırıcam tek amacım bu

zaten bunu az önceki gibi bir kodda yaptım fakat onuda apk yapamıyorum android de kullanamıyorum bir mantığı kalmıyor o yüzden