Kivy ve Python

nt

Emekli
Katılım
21 Nisan 2023
Mesajlar
1,216
Python programlama dili ile Kivy kütüphanesini kullanarak nasıl etkileyici ve kullanıcı dostu arayüzler tasarlayabileceğinizi öğreneceksiniz. Bu rehberde, özellikle metin girişi ve ayarlamalı pot (slider) kullanımını ele alacağız. Kivy'nin ve Python'un gücünü keşfetmeye hazır olun!

Kivy, Python tabanlı bir açık kaynaklı GUI (Grafiksel Kullanıcı Arayüzü) kütüphanesidir. Kivy'nin temel amacı, farklı platformlarda (Windows, macOS, Linux, Android, iOS, Tablet, Telefon, Dokunmatik yüzeyler ve Ütü :D )

Temel bir ui (arayüz) tasarımına geçelim,
Önce Python kodumuzu yazıyoruz bunu ui.py diye kaydedebilirsiniz
Gerekli kütüphaneleri yazalım
Bir class tanıtalım ve o class ile .kv dosyamızı yazalım

Kod:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.slider import Slider

class UserInterface(BoxLayout):
    def __init__(self, **kwargs):
        super(UserInterface, self).__init__(**kwargs)
     
        self.orientation = 'vertical'
        self.padding = 20
     
        label = Label(text="Merhaba! Kivy Arayüzüne Hoş Geldiniz")
        self.add_widget(label)
     
        self.text_input = TextInput(hint_text="Metin Giriniz")
        self.add_widget(self.text_input)
     
        label_slider = Label(text="Ayarlamalı Pot Değeri: 0")
        self.add_widget(label_slider)
     
        self.slider = Slider(min=0, max=100, value=0)
        self.slider.bind(value=self.on_slider_value_change)
        self.add_widget(self.slider)
     
    def on_slider_value_change(self, instance, value):
        self.ids.label_slider.text = f"Ayarlamalı Pot Değeri: {int(value)}"

class MyApp(App):
    def build(self):
        return UserInterface()

if __name__ == '__main__':
    MyApp().run()


Şimdi ise ui.kv dosyamızı yazalım,

Kod:
<UserInterface>:
    orientation: 'vertical'
    padding: 20

    Label:
        text: "Merhaba! Kivy Arayüzüne Hoş Geldiniz"

    TextInput:
        hint_text: "Metin Giriniz"

    Label:
        id: label_slider
        text: "Ayarlamalı Pot Değeri: 0"

    Slider:
        id: slider
        min: 0
        max: 100
        value: 0
        on_value: root.on_slider_value_change(*args)


şimdi kodumuz hazır arayüzüde yaptık windows için exe yapalım

bunun için pyinstaller yüklememiz gerekli
Kod:
pip install pyinstaller
daha sonra dönüştüreceğimiz dosyayı masaüstüne çıkaralım unutmayalım tüm dosyalar aynı klasörde olsun
dosyamızın oldugu dizinde terminal açıp kodu girelim
Kod:
pyinstaller --onefile (buraya dosya adını girelim)
işlemi tamamlandığında, dist adında yeni bir dizin oluşturulur. Bu dizinde, dönüştürülmüş EXE dosyasını bulabilirsiniz.
Screenshot 2023-08-21 at 08-32-41 26.png (PNG Image 1366 × 768 pixels) — Scaled (82%).png
 
Son düzenleme:
Daha önce PyQT ye biraz bakmıştım ve kullanımı bu kadar kolay görünmüyordu. Kivy yi daha ayrıntılı inceleyeceğim.

Nedense screenshot'lar son derece düşük çözünürlükle çıkmış. Hangi programla aldın bunları?
 
  • Beğen
Reactions: nt
@Haze kivy ile arayüz tasarlamak çok basit hem tüm platformlarda çalışıyor
 
soyledigim data grid, combobox, edit box ile ilgili kucuk bir ornek yaparmisin rica etsem.
gride form uzerinden veri girermisin.
 
Son düzenleme:
@Mikro Step

USBHID:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.animation import Animation
from kivy.utils import platform
from jnius import autoclass, PythonJavaClass, java_method

class USBHIDApp(BoxLayout):
    def __init__(self, **kwargs):
        super(USBHIDApp, self).__init__(orientation='vertical', padding=20)

        title_label = Label(text='USB HID Uygulaması', font_size=30, size_hint_y=None, height=50, color=(0, 0.7, 0.3, 1))
        send_button = Button(text='Veri Gönder', font_size=24, size_hint_y=None, height=64, background_normal='',
                             background_color=(0, 0.5, 0.9, 1))
        status_label = Label(text='Durum: Bağlı değil', font_size=20, size_hint_y=None, height=30, color=(0, 0, 0, 1))

        self.add_widget(title_label)
        self.add_widget(send_button)
        self.add_widget(status_label)

        send_button.bind(on_press=self.send_hid_data)

        if platform == 'android':
            PythonActivity = autoclass('org.kivy.android.PythonActivity')
            Intent = autoclass('android.content.Intent')
            Context = autoclass('android.content.Context')
            PendingIntent = autoclass('android.app.PendingIntent')
            UsbManager = autoclass('android.hardware.usb.UsbManager')

            class USBReceiver(PythonJavaClass):
                __javainterfaces__ = ['android/content/BroadcastReceiver']

                def __init__(self):
                    super(USBReceiver, self).__init__()

                @java_method('(Landroid/content/Context;Landroid/content/Intent;)V')
                def onReceive(self, context, intent):
                    action = intent.getAction()
                    if action == UsbManager.ACTION_USB_DEVICE_ATTACHED:
                        usb_device = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE)
                    elif action == UsbManager.ACTION_USB_DEVICE_DETACHED:
                        pass

            service = autoclass('org.kivy.android.PythonService').mService
            usb_receiver = USBReceiver()
            filter = IntentFilter(UsbManager.ACTION_USB_DEVICE_ATTACHED)
            service.registerReceiver(usb_receiver, filter)

    def send_hid_data(self, instance):
        #HIDİŞLEM
        print("HID veri gönderildi!")
        anim = Animation(color=(1, 0, 0, 1), duration=0.2) + Animation(color=(0, 0.5, 0.9, 1), duration=0.2)
        anim.start(instance)

class USBHIDAppApp(App):
    def build(self):
        return USBHIDApp()

if __name__ == '__main__':
    USBHIDAppApp().run()

kodumuz hazır şimdi app yapmak için

Kod:
pip install buildozer

kivy uygulama dosyamıza gidelim dosya içerisinde
Kod:
buildozer init
daha sonra
Kod:
requirements = python3,kivy
şimdi deploy yapıyoruz
Kod:
buildozer android debug deploy run
bu komut apk dosyasını oluşturyor
APK dosyasını bir Android cihaza yükleyerek uygulamanızı test edebiliriz
tıkladıkca veri gönderiyor


Screenshot_2023-10-17_21-50-16.png
 
Selam!

kodu gpt ve codewisper ile yazdım maalesef sözverdikten sonra kol ağrılarım başladı
Bu yüzden kodun kalitesi pek iyi olmayabilir
iyileşince tekrar görüşmek üzere!
 
Son düzenleme:

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,070
Mesajlar
103,540
Üyeler
2,542
Son üye
coskuncinar

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
deneyci wrote on hakan8470's profile.
Sibonge uNkulunkulu ngokuhlukahluka asinike kona.

Bu hangi dil? :)
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Back
Top