Kivy ve Python

nt

Emekli
Katılım
21 Nisan 2023
Mesajlar
1,215
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
5,922
Mesajlar
101,114
Üyeler
2,504
Son üye
yaxe22

Son kaynaklar

Son profil mesajları

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 :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
Back
Top