GUI etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
GUI etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

27 Eylül 2023 Çarşamba

C# Yeni Eklenen Property ile Veri Bağlama (Binding)

 Selam. Bu yazıda veri bağlama işlerini deşmeye devam edeceğim. Daha önce basit yollarını gördüğümüz işlemlerin şimdi daha kuralına uygun yapılmasını göreceğiz. Amacımız bir sınıfta Property (özellik) olarak tanımlanan bir değişkeni veri başlama işleminde kullanmak. Adım adım gidelim.

Öncelikle yeni bir WPF .Net masaüstü uygulaması üreterek başlayalım:

25 Ağustos 2023 Cuma

C#'ta Veri Bağlamak Zor (mu?)

 Selam, bu yazı kısa olacak. Hep kafama takılan bir soru, veri bağlama bu kadar uğraşma gerektirmeden Visual Studio kabiliyetlerini kullanarak yapılamaz mı? Mevcut iki kontrolün özelliklerini birbirine karşılıklı bağlayabiliyoruz. Ama "bir değişken olsun , ben de bu değişkene kontrolü bağlarsam onun özelliğini değiştirsin, arkaplan kodundan da değere müdahale edebileyim", deyince bir sürü iş çıkıyor başımıza. Yazılımcının iyisi tembel olanıdır deyip , bu işe kolay bir çözüm aradım ve aşağıda yazdıklarım çıktı ortaya. Hadi bakalım,

17 Nisan 2023 Pazartesi

Python Tkinter ile Slant Oyunu Yazalım

 Selam , bu sıralar oyunlara taktım. Mantık oyunlarını ya oynamak ya da çözmek için kod denemeleri yapıp duruyorum. Bu oyunlardan biri de Slant oyunu. Bu oyun için de çözmek değil ama oynamak için kod yazdım. Bu yazımda sizlerle bu kodu  yazarken nasıl düşündüğümü ve hangi yollardan gittiğimi paylaşacağım.

Pek uzun bir program olmayacak, bu yüzden tek bir Python dosyası ile bitireceğiz. Ama yanında oyun haritaları olacağı için ayrı bir klasörde olsa daha iyi olacak. 

Öncelikle temel ihtiyacımız olan görsel yapıları bir oluşturalım. Öncelikle minimum bir uygulama .

import tkinter as tk

app = tk.Frame(None, width=500, height=500, bg="gray")

app.pack()
app.master.title("SLANT")
app.master.resizable(0, 0)
app.mainloop()

16 Mart 2023 Perşembe

Python Tkinter Hashiwokakero Oyunu Yazalım

 Selam uzun bir yazı olacağını sandığım yeni bir yazı dizisiyle karşınızdayım. Japonların Hashiwokakero adını verdikleri bir mantık oyunu var. Çok severim. Ben bunu yaparım dedim. Önce C# ile yaptım ama çok uzun sürdü. Python ile yaparım dedim. Çok daha az kodla biteceğini tahmin ettim ve aynen öyle oldu. Bu yazı dizisinde oyunu yazarken gittiğim adımları sizinle paylaşmak istedim. Emin olduğum bir şey var, bir programlama dilini etkili kullanmak istiyorsan, o dil ile iş gören bir şey yapacaksın. 

Bütün yaygın kullanılan Python desktop GUI kütüphaneleri ile denemeler yapmaya başladım ve Python'un default GUI kütüphanesi olan Tkinter kütüphanesini kullanmaya karar verdim. 


Python Oyun Penceresi Taslağı

26 Nisan 2022 Salı

NwJs VueJs BulmaCSS JSONdata ile Masaüstü Rehber Uygulaması

 Merhaba, öyle döndüm, böyle döndüm VueJs ile bir masaüstü uygulaması geliştirdim. Bunu yaparken hem JavaScript hem de VueJs üzerine çok şey öğrendim. Şimdi bu öğrendiklerimi sizinle paylaşmak istiyorum. 

Öncelikle NwJs ile uygulama kalıbını oluşturarak başlayalım.


NwJs Yeni Masaüstü Uygulama

Öncelikle NwJs sitesinden en son halini indirelim. Ben ne olur ne olmaz deyip SDK sürümünü indirdim. İndirilen bir zip dosya, bunu herhangi bir yerde açalım.

21 Şubat 2022 Pazartesi

C# UWP KONTROLLER

 Önce yeni bir proje oluşturalım. Visual Studio açın ve Yeni bir proje oluştur seçin. Boş Uygulama (Evrensel Windows) seçip Sonraki butonuna tıklayın. Proje adına Kontroller1 yazın ve uygulamanın konacağı klasörü seçin. Oluştur butonuna tıklayarak gelen platform seçiminde default değerlerle Tamam butonuna tıklayın. Uygulamamız Genel Bakış sayfası ile açılacaktır. 

Proje ağacında MainPage.xaml dosyasını çift tıklayıp tasarım görüntüsünde açılmasını sağlayalım. Tasarım görünümünde boş sayfaya tıkladığımızda proje oluşurken sayfaya konan default Grid elemanı seçilecek ve Özellikler bölümüne bu Grid elemanının özellikleri gelecektir. 


16 Şubat 2022 Çarşamba

UWP Uygulamalarında Data Binding

 Binding (veriye bağlama) işlemi kullanarak gösterdiğimiz elemanların içeriklerini , stillerini vs değiştirerek bağlanan veriye göre görselimizi değiştirebiliriz. Şu isteklerimiz olabilir.

  • Bir nesnenin bulunulan andaki değerlerini göstermek isteyebiliriz. Bağlama anındaki değerler kullanılır, daha sonra o nesneye ne olduğu ile ilgilenilmez.
  • Nesnelerin en son değerlerini göstermek. Bu durumda bağlı nesne değiştikçe görsel de değişecektir.
  • Kullanıcıların kontrollerden yaptığı değişikliklerin hafızadaki bağlı nesneleri de değiştirmesini isteyebiliriz.
  • Görseldeki bazı kontrollerin görünümlerini görseldeki diğer kontroller ile değiştirmek isteyebiliriz.
  • Olay işleyicileri ve şablonları hafızadaki nesnelere göre değiştirmek isteyebiliriz.
  • Nesneleri sayfada gösterirken kullanıcının veride yaptığı değişikliklere göre görüntüsünün değişmesini isteyebiliriz.

18 Mayıs 2021 Salı

Bir HMI Uygulaması yapalım

 Merhaba bu yazımda tekrar otomasyon programlama üzerine çalışacağım. Daha önce http://ujk-ujk.blogspot.com/2017/12/s7-1200-plc-nettoplcsim-tia-portal.html yazısında C# üzerinden PLC'ye ulaşıp basit bir görsel yapmıştık. Şimdi biraz daha kapsamlı, HMI denilebilecek bir uygulamayı nasıl geliştiririz ona çalışacağız. Mesela şöyle bir uygulama ekranı hedefliyoruz.


PLC'ler için yazılmış HMI programları var tabi ama lisans ücretleri oldukça yüksek. Düşük bütçeli küçük projeler için burada göreceğimiz yöntemlerle basit HMI uygulamaları yapabiliriz. Tabi bunları geliştirip birçok HMI yazılımında olmayan özelliklere sahip bir uygulama yapmamız da mümkün. Özellikle ayrıntılı üretim ve kalite raporu istenen projelerde elimizin altında C#'ın bütün gücünün olması bize sınırsız imkanlar sağlar.

30 Nisan 2021 Cuma

LiveCode Platformu ile Uygulama Geliştirmek

 Merhaba pandemi dönemi iş yok. Boş durma boşa çalış projesi olarak yeni neler öğrenebilirim diye internette geziyorum. GUI Builder olarak bilmediğim neler var diye bakarken LiveCode adında bir yazılım geliştirme platformu gördüm. Aslında ücretli bir yazılım ama https://livecode.org adresinde Open Source versiyonu da mevcut. Hobi için veya öğrenmek için bu kadarı yeterliymiş. İndirdim başladım dökümanlarını karıştırmaya. Birlikte karıştıralım güzel bir geliştirme ortamına benziyor.



LiveCode Uygulamasının Yapısı


LiveCode'da basit bir uygulama oluşturmak sadece birkaç dakika sürer. Önce bir stack (veya pencere) oluşturursunuz, ardından stack 'i butonlar , checkboxlar, text fieldler veya menüler gibi kontrollerle doldurursunuz. Son olarak, uygulamanıza nasıl davranması gerektiğini anlatmak için LiveCode’un İngilizce benzeri programlama dilini kullanırsınız.


18 Nisan 2021 Pazar

NwJs ve VueJs ile Masaüstü Uygulama Geliştirmek - 2

 Merhaba ,


Önceki yazıda NwJs kuruluşunu göstermiştik. Bu sefer VueJs versiyon 3 kullanalım.  https://unpkg.com/vue@next adresinden VueJs versiyon 3 indirebiliriz. Başlamak için helloWorld adında yeni bir klasör oluşturup içine indirdiğimiz vue.global.js dosyasını koyalım. Sonra da package.json , index.html , main.js isminde yeni dosyalar ekleyelim.

helloWorld/package.json
{
    "name": "helloWorld",
    "main": "index.html"
}
helloWorld/index.html
<!DOCTYPE html>
<html>
<head>
    <title>Merhaba Dünya!</title>
    <script src="vue.global.js"></script>
</head>
<body>
    <h1>Merhaba Dünya!</h1>
    <script src="main.js"></script>
</body>
</html>

10 Nisan 2021 Cumartesi

NwJs ve VueJs ile Masaüstü Uygulama Geliştirmek

 Merhaba, bu yazıda VueJs yardımıyla NwJs platformunda masaüstü uygulama geliştirmek için araştırma yapıyorum. Nw.js , Google Chrome ve NodeJs temelleri üzerinde kurulmuş ve masaüstü uygulamaları web teknolojileri kullanarak üretmeyi amaçlayan bir platform. İlgimi çekti ve bir deneyelim bakalım neler yapabiliriz diyerek başladım. Bu yazıda VueJs versiyon 2 kullandım.


NwJs Kurulumu


Ben NwJs sitesindeki yazıya göre kurdum. Bu sayfadan SDK versiyonu zip dosyasını indirelim ve bilgisayarımızda seçtiğimiz bir klasöre içindekileri açalım. Daha sonra bu klasörü sistemimizin PATH ortam değişkenine ekleyelim. Nasıl yaparız bu PATH işini? Sistem -> Gelişmiş Sistem Ayarları -> Ortam değikenleri ile Windows işletim sisteminde yapılıyor. 

6 Mayıs 2020 Çarşamba

PySimpleGUI ile KOLAY PYTHON GUI - 3

<< 2. Bölüm

Merhaba. Devam edelim. Önceki iki bölümden sonra örnek GUI reçeteleri ile devam ediyoruz.



Reçete - Ismarlama Progressbar


Daha önce bir progressbar görmüştük ama onunyanında bir sürü istatistiki bilgi de vardı. Kendi isteğimize özel görünümde bir progressbar elde etmek için bu reçeteyi kullanabiliriz. 


CustomProgressbar.py
import PySimpleGUI as sg

layout = [  [sg.Text("Bir ısmarlama progres metre")],
            [sg.ProgressBar(1000, orientation="h", size=(20, 20), key="-PROGBAR-")],
            [sg.Cancel()]  ]

window = sg.Window("Ismarlama progressbar", layout)

for i in range(1000):
    event, values = window.read(timeout=0)
    if event in (None, "Cancel"):
        break
    window["-PROGBAR-"].update_bar(i + 1)

window.close()
Resimi yakalamaya uğraşıyorum. Hayır, ne zorum varsa, timeout=0 yerine timeout=10 yap yavaş ilerlesin di mi..



PySimpleGUI ile KOLAY PYTHON GUI - 2

<< 1. Bölüm 

Merhaba,

Geçen bölüm kaldığımız yerden devam ediyoruz. Yeni bir reçete ile başlıyoruz.



Reçete - Program ayarlarını kaydetmek ve yüklemek


Bazı programlar son durumunu ya da bazı ayarlarını saklayıp sonraki kullanımda tekrar aynı yerlerden devam etme ihtiyacı duyar. 

Bu program reçete olarak biraz uzun ama bize bir çok fikir verecek.

Ana düşüncemiz programa ait ayarları bir dictionary'de saklamak. Bu dictionary diske kaydedilecek ve oradan yüklenecek. 

Bu özelliğe ihtiyaç duyan uygulamalardan biri rainmeter stili dediğimiz görsellikte olan uygulamalar. Bu küçük programlar her zaman bir ayarları kaydetme ihtiyacı duyarlar. 

Yapı oldukça basit. Ayarlarımızı bir dictionary'ye koyarız. GUI ayarlarında yapılan değişiklikler bu dictionary'yi değiştirir ve daha sonra tekrar kullanmak üzere diske kaydederiz. Böylece programı her açtığımızda tekrar aynı ayarlamaları yapmak zorunda kalmayız.

Verileri kayıt/yükleme için kullanacağımız paket bir JSON paketi olacak. Bunlar Python dictionary'lerini yazmayı ve okumayı çok kolay kılar. Ayrıca oluşan dosyaları manual olarak da çok kolay değiştirebiliriz. 

Bu raçete tarifinde programımızı şöyle düzenlememiz gerekiyor.
  1. Default ayarlar en üstte olacak
  2. Key ve değerlerden oluşan bir tablo hazırlayacağız
  3. Ayarlar dosyası adı
  4. Ayarlar penceresi
  5. Ana program

30 Nisan 2020 Perşembe

PySimpleGUI ile KOLAY PYTHON GUI


Merhaba , karantina günlerinde Rails için yazılar yazarken internette gözüme takılan bir şey çok ilgimi çekti. PySimpleGUI adında bir Python GUI kütüphanesi. Aynı Ruby'nin Shoes kütüphanesi gibi kolayca GUI uygulaması yapılabiliyor. Hatta bir konsol uygulamasında bile kullanıcıya soru sormak, dosya seçtirmek vs işler için kolayca kullanılabilir.

Hadi beraber kurcalayalım. İlk önce kurulum tabi ki.

    
    pip install pysimplegui
    veya
    pip3 install pysimplegui
    

Reçete-1A Tek Atımlık Pencere (en basit tasarım)



27 Ocak 2017 Cuma

Red GUI Örnekleri

Üzerinde bir buton olan pencere:
Red [needs: 'view]
view [
    button "Bana tıkla"
]
Buton tıklandığında bişey yapsın:
Red [needs: 'view]
view [
    button "Bana tıkla" [print "Beni tıkladılar!"]
]
Burada da bir buton ve "f" değişkenine atanan bir field var. Butona tıkladığımızda f field'ına yazdığımız yazıyı bize gösterir:

24 Ocak 2017 Salı

Red Temel Bilgiler

Bir önceki yazımızda Red programlama diline kısa bir giriş yapmıştık. Şimdi de dilin temel yapılarına derinlemesine bir girelim. 

Fonksiyonlar

Fonksiyonlar verilen argümanlar (ya da parametreler) doğrultusunda eylem yapan kelimelerdir. Örneğin "print" fonksiyonu Red konsolda argümanda verilen değeri yazar. Aşağıdaki kodda "print" kelimesi fonksiyon, çift tırnak içinde yazılmış olan "Merhaba Dünya!" yazısı da argümandır. Şimdi Red konsolda şu kodu yazalım:
print "Merhaba Dünya!"

7 Eylül 2015 Pazartesi

QT Designer Yardımıyla Python Uygulaması Yazmak

Merhaba ilk sessiz film çalışmamda Python ve QT Designer kullanarak bir renk seçici programı yazdım.



22 Ağustos 2015 Cumartesi

Kivy ile Python GUI Örneği

Orjinali http://kivy.org/docs/tutorials/pong.html

Merhaba,

Bu sefer yine Python programlama dilini kullanarak bişeyler yapacağız. Kivy hızlı uygulama geliştirmek için açık kaynak bir Python kütüphanesi.

Bu çalışmada Kivy kütüphanesini kullanarak basit Pong oyunu yapacağız.



31 Aralık 2014 Çarşamba

WxPython Örnekler

İlk önce en basit uygulama :

# -*- coding: utf-8 -*-
import wx

app = wx.App()

frame = wx.Frame(None, -1, "BASİT")
frame.Show()

app.MainLoop()

 önce uygulama tanımlanıyor, sonra frame ile pencere tanımölanıyor. Sonrada frame görünür yapılıp, uygulama başlatılıyor.


30 Aralık 2014 Salı

REBOL Örnekleri - 2

Hadi tekrar başlayalım :
REBOL [title: "ikinci kısım"]

view center-face layout [
    text "Merhaba 2. Kısım"
]