Merhaba arkadaşlar,  bu çalışmada nodemcu kullanarak bir araba yapacağız. Aynı zamanda arabanın hızını da kontrol edeceğiz. 

Öncelikle nodemcu'nın ne olduğuna değinelim;

NodeMCU; ESP8266 tabanlı, düşük maliyetli ve açık kaynak kodlu elektronik geliştirme kartıdır. Kartın üzerinde bulunan ESP8266 Wifi modülü sayesinde internete kolayca bağlanabilir, bu sayede uzaktan kontrol ve IoT projelerinde kullanılmaktadır.

Şimdi gelelim yapmak istediğimiz arabaya.  Önce kullanacağımız arayüzü tasarlayacağız. Biraz html ve css bilgisi yeterli olacaktır. İleri, geri, dur, sağ, sol, hızlı, orta, yavaş şeklinde butonları yerleştireceğiz.


Bu çalışmanın html ve css kodu aşağıdadır:

 <!DOCTYPE html> 

 <head>

 <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">

 </head> 

 <style>

 html { font-family: Helvetica; 

 display: inline-block; 

 margin: 0px auto; 

 text-align: center;}

 .button 

 { 

 background-color: #6df996; 

 border: none; 

 color: white; 

 padding: 25px 25px;

 text-decoration: none; 

 font-size: 30px; 

 margin: 2px; 

 cursor: pointer;

 }

 .button2 {

 background-color: #9effba;

 }

 </style>

 <body> 

 <h1>RC Car - IOT</h1> 

 <button class=\"button\"><a href=\"ileri\">İLERİ</a></button>

 <br> <button class=\"button\" ><a href=\"sol\">SOL</a></button> 

 <button class=\"button button2\" ><a href=\"dur\">DUR</a></button> 

 <button class=\"button\"><a href=\"sag\">SAĞ</a></button> 

 <br> <button class=\"button\"><a href=\"geri\">GERİ</a></button> 

 <h2> Hız Miktarı </h2> 

 <button class=\"button\"><a href=\"yavas\">Yavas</a></button>

 <button class=\"button\"><a href=\"orta\">Orta</a></button>

 <button class=\"button\"><a href=\"Hızlı\">Hızlı</a></button>

 </body>

 </html>


Bu şekilde ara yüzümüz:




Daha sonra Arduino ide'sinde, butonların görevlerini, nodemcu'yu internete bağlamak gibi işlemleri gerçekleştireceğiz. Burada hızlı, orta, yavaş butonlarına basıldığında kod'ta belirlediğimiz değere göre aracın hızı değişecektir. 

Nodemcu kodumuz:


#include <ESP8266WiFi.h>

#include <ESP8266WebServer.h>

ESP8266WebServer server(80); // 80 numaralı port


const int ena = 14;

const int enb = 12;

const int in1 = 5;

const int in2 = 4;

const int in3 = 0;

const int in4 = 2;


int speedCar=450;  

// wifi kurulumu

char ssid[] = "";

char pass[] = "";

char HTML[] = " <!DOCTYPE html>  <head> <meta name=\'viewport\' content=\'width=device-width, initial-scale=1\'></head>  <style> html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}.button { background-color: #6df996; border: none;  color: white;  padding: 25px 25px; text-decoration: none;  font-size: 30px;  margin: 2px;  cursor: pointer; } .button2 {background-color: #9effba; } </style> <body>  <h1>RC Car - IOT</h1>  <button class=\'button\'><a href=\'ileri\'>ILERI</a></button> <br> <button class=\'button\' ><a href=\'sol\'>SOL</a></button>  <button class=\'button button2\' ><a href=\'dur\'>DUR</a></button>  <button class=\'button\'><a href=\'sag\'>SAG</a></button>  <br> <button class=\'button\'><a href=\'geri\'>GERI</a></button>  <h2> Hiz Miktari </h2>  <button class=\'button\'><a href=\'yavas\'>Yavas</a></button> <button class=\'button\'><a href=\'orta\'>Orta</a></button> <button class=\'button\'><a href=\'hizli\'>Hizli</a></button> </body></html>";


void handleRoot() {

  server.send(200,"text / html", HTML);

}

void setup() {

  pinMode(ena, OUTPUT);

  pinMode(enb, OUTPUT);

  pinMode(in1, OUTPUT);

  pinMode(in2, OUTPUT);

  pinMode(in3, OUTPUT);

  pinMode(in4, OUTPUT);

  

  Serial.begin(115200);

  WiFi.begin(ssid, pass); // wifi bağlantısı için

  Serial.println("");

  Serial.print("Bağlanıyor . ");

  while ( WiFi.status() != WL_CONNECTED){

    delay(500);

    Serial.print(".");

  }

  Serial.println("");

  server.on("/", handleRoot);// işleyici işlevini yolla ve ilişkilendirme

  server.on("/other",[] (){

  server.send(200, "text/html"," Other URL");

  });

  server.begin(); //Server başladı

  Serial.print("Server bekliyor, acik ");

  Serial.print(WiFi.localIP());

  Serial.println(" tarayıcıda");

  server.on("/", handleRoot);

server.on("/ileri",ileri);

server.on("/sol",sol);

server.on("/sag",sag);

server.on("/geri",geri);

server.on("/dur",dur);


server.on("/yavas",yavas);

server.on("/orta",orta);

server.on("/hizli",hizli);

server.begin();

}

void loop(){

  server.handleClient(); // gelen taleplerin ele alınması  

}

void yavas(){

  speedCar = 300;

  server.send(200,"text/html",HTML);

}

void orta(){

 speedCar = 600;

 server.send(200,"text/html",HTML);

}

void hizli(){

   speedCar = 1000;

   server.send(200,"text/html",HTML);

}

void ileri(){

  Serial.println("\nMotor ileri");

  server.send(200,"text/html",HTML);


   digitalWrite(in1, LOW);

   digitalWrite(in2, HIGH);

   analogWrite(ena, speedCar);


   digitalWrite(in3, HIGH);

   digitalWrite(in4, LOW);

   analogWrite(enb, speedCar);

  Serial.print("Motor hizi: ");

  Serial.print(speedCar);

}

void geri(){

  Serial.println("\nMotor geri");

  server.send(200,"text/html",HTML);


  digitalWrite(in1, HIGH);

  digitalWrite(in2, LOW);

  analogWrite(ena, speedCar);


  digitalWrite(in3, LOW);

  digitalWrite(in4, HIGH);

  analogWrite(enb, speedCar);

  Serial.print("Motor hizi: ");

  Serial.print(speedCar);

}

void sag(){

  Serial.println("\nMotor sag");

  server.send(200,"text/html",HTML);


   digitalWrite(in1, HIGH);

   digitalWrite(in2, LOW);

   analogWrite(ena, speedCar);


   digitalWrite(in3, HIGH);

   digitalWrite(in4, LOW);

   analogWrite(enb, speedCar);

  Serial.print("Motor hizi: ");

  Serial.print(speedCar);

}

void sol(){

  Serial.println("\nMotor sol");

  server.send(200,"text/html",HTML)

  digitalWrite(in1, LOW);

  digitalWrite(in2, HIGH);

  analogWrite(ena, speedCar);


  digitalWrite(in3, LOW);

  digitalWrite(in4, HIGH);

  analogWrite(enb, speedCar);

  Serial.print("Motor hizi: ");

  Serial.print(speedCar);

  }

void dur(){

  Serial.println("\nMotor dur");

  server.send(200,"text/html",HTML);


  digitalWrite(in1, LOW);

  digitalWrite(in2, LOW);

  analogWrite(ena, speedCar);


  digitalWrite(in3, LOW);

  digitalWrite(in4, LOW);

  analogWrite(enb, speedCar);

  Serial.print("\nMotor hizi: ");

  Serial.print(speedCar);

}

Projenin devre şeması ise:




Github :

https://github.com/one-engineer/nodemcu-rc-car-web-server

 Algoritma

Bir sorunu çözmek veya belirlenmiş bir amaca ulaşmak için tasarlanan yola, takip edilen işlem basamaklarına algoritma denir.

Algoritmalar açıkça belirtilmiş bir başlangıcı ve sonu olan işlemler kümesidir. Amaca ulaşmak için işlenecek çözüm yolları ve sıralamaları belirlenir ve algoritma bu sırayı  takip ederek en mantıklı çözüme ulaşır.

Yataktan kalkıp işe gitmek için genç bir idareci tarafından takip edilen "kalk ve ışılda algoritması"nı düşünün:


1)Yataktan kalk,
2)Pijamalarını çıkar,
3)Duş al,
4)Giyin,
5)Kahvaltı yap,
6)İşe git.

Bu akış, genç idareciyi kritik kararlar vermeye iyi bir şekilde hazırlar. Aynı adımları biraz farklı sırada yapıldığını düşünün:


1)Yataktan kalk,
2)Pijamalarını çıkart,
3)Giyin,
4)Duş al,
5)Kahvaltı yap,
6)İşe git.

Bu durumda, genç idarecimiz işe sırılsıklam gidecek. Bir bilgisayar programında ifadelerin hangi sırada yürütüleceğini belirlemeye program kontrolü denir.

Sözde Kod

Sözde kod algoritma geliştirmenize yardımcı olan yapay ve gayri resmi bir dildir. Günlük dile benzer; gerçek bir bilgisayar programlama dili olmamasına rağmen uygun ve kullanıcı dostudur. 

Bu kodları bilgisayarda çalıştıramayız. Aksine, bir programını C gibi bir bilgisayar programlama dilinde yazmaya teşebbüs etmeden önce sadece programı "planlama"nıza yardımcı olur. Yukarıda örnek olarak bahsettiğimiz "kalk ve ışılda algoritması" sözde koda örnek olarak verilebilir. 

Başka bir örnek daha vermek istersek:

1)Birinci sayıyı oku;
2)İkinci sayıyı oku;
3)Üçüncü sayıyı oku;
4)İlk iki sayıdan büyük olanı bul;
5)Büyük sayıyı sonuç isimli değişkene ata;
6)Eğer sonuç değişkeni üçüncü sayıdan büyük ise sonuç değerini yazdır;
7)Değilse
8)Üçüncü sayıyı yazdır;

if Seçim İfadesi

Seçim ifadeleri, alternatif eylemler arasında seçim yapmak için kullanılır. Örneğin, bir sınavdaki geçme notunun 60 olduğunu düşünün:

Eğer öğrencinin notu 60'tan büyükse veya 60' a eşit ise
    "Geçti" Yaz

sözde kod ifadesi "öğrencinin notunun 60'tan büyük veya eşit" koşulunun doğru olup olmadığını karşılaştırır. Koşul doğru ise "Geçti" yazılır ve sıradaki sözde kod ifadesi "icra edilir". Koşul yanlış ise, yazma işlemi göz ardı edilir ve sonraki sözde kod icra edilir.

Yukarıdaki if ifadesi sözde kodu C'de:

if ( not >= 60 )
printf ( "Geçtiniz\n" );

gibi yazılabilir.


if...else Seçim İfadesi

if seçim ifadesi, yalnızca koşul doğru olduğu zaman işaret edilen eylemi yapar; diğer türlü eylem atlanarak geçilir. if...else seçim ifadesi koşul doğru olduğu zaman ve yanlış olduğu zaman yapılacak farklı eylemleri belirlemenize izin verir. Örneğin,


Eğer öğrencinin notu 60'tan büyük veya eşit ise
    "Geçti" Yaz
Değilse
    "Kaldı" Yaz

sözde kod ifadesi, öğrencinin notu 60'tan büyük veya eşit ise "Geçti" veya öğrencinin notu 60'tan küçükse "Kaldı" yazar. İki durumda da, yazma işlemi olduktan sonra, sıradaki sözde kod "icra edilir." Değilse 'nin gövdesinde de boşluk bırakılmamıştır. 

Yukarıdaki if..else ifadesinin sözde kodu C'de:

if ( not >= 60 )
    printf ( "Geçti" );
else
    printf ( "Kaldı" );



Kümelenmiş if...else İfadeleri

if...else ifadeleri içinde if...else ifadeleri yerleştirerek çoklu durumlar için karşılaştırma yapar. Örneğin aşağıdaki sözde kod ifadesi, 90'dan büyük veya eşit olan sınav notları için A, 80'den büyük veya eşit ( fakat 90'dan küçük) notlar için B, 70'ten büyük veya eşit ( fakat 80'den küçük ) notlar için C, 60'tan büyük veya eşit (fakat 70'ten küçük )  notlar için D ve diğer tüm notlar için F yazılacaktır.


Eğer öğrencinin notu 90'dan büyük veya eşit ise
    "A" Yaz
Değilse
    Eğer öğrencinin notu 80'den büyük veya eşit ise
        "B" Yaz
    Değilse
        Eğer öğrencinin notu 70'den büyük veya eşit ise
            "C" Yaz
        Değilse
            Eğer öğrencinin notu 60'dan büyük veya eşit ise
                "D" Yaz
            Değilse
                "F" Yaz


Bu sözde kod C'de:


if ( not >= 90 ){
    printf("A\n");
    } // if sonu
else{
    if ( not >= 80 ){
        printf("B\n");
        } // if sonu
    else {
        if (not >= 70){
            printf ("C\n");
            } // if sonu
        else {
            if ( not >= 60 ){
                printf ( "D\n" );
                } // if sonu
            else {
                printf ("F\n" );
                } // else sonu
           } // else sonu
        } // else sonu
    } // else sonu        

         

gibi yazılabilir. not değişkeni 90'dan büyük veya eşitse, dört koşulda olacaktır, ancak sadece ilk karşılaşmadan sonra printf ifadesi yürütülecektir. Bu printf ifadesi yürütüldükten sonra, "en dış"taki if...else ifadesinin else kısmı atlanarak geçilir. 

Yukarıdaki if ifadesini;

if ( not >= 90 ) {
    printf("A\n"); 
    }
else if ( not >= 80 ){
    printf("B\n");
    }
else if (not >= 70){
    printf ("C\n");
    }
else if ( not >= 60 ){
    printf ( "D\n" );
    }
else{
    printf ("F\n" );
    }

şeklinde yazmayı tercih edebilirsiniz. 




while Tekrarlama İfadesi


Bir tekrarlama ifadesi, koşullar doğru olduğu sürece tekrar edilecek bir eylem belirtmemize izin verir.

Alışveriş listemde daha alınacak olduğu sürece
    Sonraki malzemeyi al ve listede üzerini çiz.

sözde kod ifadesi alışveriş boyunca meydana gelen tekrarı tanımlar. "Alışveriş listemde daha alınacak var" koşulu doğru veya yanlış olabilir. Doğru ise "Sonraki malzemeyi al ve listede üzerini çiz" eylemi gerçekleşir. Bu eylem, koşul doğru kaldığı sürece tekrarlı olarak gerçekleştirilir.  while  tekrarlama ifadesinin içerdiği ifade(ler) while 'ın gövdesini oluşturur.  

En sonunda , koşul yanlış olacaktır. Bu noktada, tekrarlama sonlanır ve tekrarlama yapısından sonraki ilk sözde kod yürütülür. 

C programlamada while döngüsünün syntax yapısı:

while(şart) {
   işlemler(s);
}


while ifadesine örnek olarak, 100'den büyük ve 3'ün kuvveti olan ilk sayıyı bulmak için tasarlanmış bir program parçası düşünün. sonuc tam sayı değişkeninin başlangıçta 3 olduğunu farz edin. Aşağıdaki while tekrarlama ifadesinin çalışması bittiği zaman sonuc istenen cevabı içerecektir.  


sonuc = 3;
while( sonuc <= 100 ) {
    sonuc = 3 * sonuc ;
    } // while sonu




Örnekler

1) Negatif bir sayıyı ekrana yazan program:


#include <stdio.h>
int main() {
    int sayi;

    printf("Sayi giriniz: ");
    scanf("%d", &sayi);

    if (sayi < 0) {
        printf("Girdigin sayi: %d.\n", sayi);
    }
}

Ekran çıktısı:


Sayi giriniz: -2
Girdigin sayi: -2.


2) Bir tam sayının tek mi çift mi olduğunu kontrol  eden program:


#include <stdio.h>
int main() {
    int sayi;
    printf("Bir tam sayi giriniz: ");
    scanf("%d", &sayi);

    if  (sayi%2 == 0) {
        printf("%d sayisi çift sayidir.",sayi);
    }
    else {
        printf("%d sayisi tek sayidir.",sayi);
    }

}


Ekran çıktısı:

Bir tam sayi giriniz: 7
7 sayisi tek sayidir.


3) Girilen iki tam sayı büyüklük olarak karşılaştıran program:


#include <stdio.h>
int main() {
    int sayi1, sayi2;
    printf("Iki tam sayi giriniz: ");
    scanf("%d %d", &sayi1, &sayi2);

    if(sayi1 ==sayi2) {
        printf("Sonuc: %d = %d",sayi1,sayi2);
    }

    else if (sayi1 > sayi2) {
        printf("Sonuc: %d > %d", sayi1,sayi2);
    }

    else {
        printf("Sonuc: %d < %d",sayi1, sayi2);
    }

}


Ekran çıktısı:

Iki sayi giriniz: 12
23
Sonuc: 12 < 23


4) 1'den 5'e kadar olan sayıları ekrana yazan program:


#include <stdio.h>
int main()
{
    int sayi = 1;
    
    while (sayi <= 5)
    {
        printf("%d\n", sai);
        ++i;
    }

}


Ekran çıktısı:

1
2
3
4
5


Kısa Yollar:

Aşağıdaki linkler ile C programlama ile ilgili olan diğer bölümlere ulaşabilirsiniz:



Kaynakça:

https://maker.robotistan.com/algoritma/

https://www.elektrikport.com/teknik-kutuphane/yalanci-kod-nedir/14925#ad-image-0

https://www.programiz.com/c-programming/c-if-else-statement

https://www.tutorialspoint.com/cprogramming/c_while_loop.htm

https://www.programiz.com/c-programming/c-do-while-loops

Deitel Deitel c ve c++ 


 1) Ekrana "Hello World!" yazan kod:


import tkinter

class MyGUI:
def __init__(self):
self.main_window=tkinter.Tk()

self.label = tkinter.Label(self.main_window, text='Hello World! ')
self.label.pack()
tkinter.mainloop()
my_gui = MyGUI()

Ekran Çıktısı:




2) Frame kullanımı:


import tkinter

class MyGUI:
def __init__(self):
self.main_window=tkinter.Tk()

self.top_frame = tkinter.Frame(self.main_window)
self.bottom_frame= tkinter.Frame(self.main_window)

self.label1=tkinter.Label(self.top_frame,text="Yaz")
self.label2=tkinter.Label(self.top_frame,text="Sonbahar")
self.label3 = tkinter.Label(self.top_frame, text="Kış")

self.label1.pack(side="top")
self.label2.pack(side="top")
self.label3.pack(side="top")

self.label4 = tkinter.Label(self.bottom_frame, text="Yaz")
self.label5 = tkinter.Label(self.bottom_frame, text="Sonbahar")
self.label6 = tkinter.Label(self.bottom_frame, text="Kış")

self.label4.pack(side="left")
self.label5.pack(side="left")
self.label6.pack(side="left")

self.top_frame.pack()
self.bottom_frame.pack()

tkinter.mainloop()
my_gui=MyGUI()

Ekran Çıktısı:



3) Buton kullanımı:


import tkinter
import tkinter.messagebox

class MyGUI:
def __init__(self):
self.main_window=tkinter.Tk()

self.my_button = tkinter.Button(self.main_window, text='Click me!', command=self.do_something)

self.my_button.pack()

tkinter.mainloop()

def do_something(self):
tkinter.messagebox.showinfo('Response', 'Thanks for clicking the button.')

my_gui=MyGUI()



Ekran Çıktısı:


4) Çıkış butonu kullanımı:


import tkinter
import tkinter.messagebox

class MyGUI:
def __init__(self):
self.main_window=tkinter.Tk()

self.my_button= tkinter.Button(self.main_window, text='Click Me!',command= self.do_something)
self.quit_button = tkinter.Button(self.main_window, text='Quit', command=self.main_window.destroy)
self.my_button.pack()
self.quit_button.pack()

tkinter.mainloop()
def do_something(self):
tkinter.messagebox.showinfo('Response','Thanks for clicking the button.')
my_gui = MyGUI()

Ekran Çıktısı:




5) Kilometreyi mil'e çeviren örnek kod:


import tkinter
import tkinter.messagebox

class sum:
def __init__(self):
self.arayuz=tkinter.Tk()
self.ust_cerceve=tkinter.Frame(self.arayuz)
self.alt_cerceve=tkinter.Frame(self.arayuz)

self.label=tkinter.Label(self.ust_cerceve,text='Enter a distance in kilometres:')
self.kilo_entry=tkinter.Entry(self.ust_cerceve,width=10)

self.label.pack(side='left')
self.kilo_entry.pack(side='left')

self.calc_button = tkinter.Button(self.alt_cerceve,text='Convert',command=self.convert)
self.quit_button = tkinter.Button(self.alt_cerceve,text='Quit', command=self.arayuz.destroy)

self.calc_button.pack(side='left')
self.quit_button.pack(side='left')
self.alt_cerceve.pack()
self.ust_cerceve.pack()

tkinter.mainloop()

def convert(self):
kilo = float(self.kilo_entry.get())

miles = kilo*0.6214
tkinter.messagebox.showinfo('results',str(kilo)+'kilometres is equal to '+str(miles)+' miles.')

kilometre_convert=sum()


Ekran  Çıktısı:




6) Üç sayının ortalamasını alan kod:


import tkinter

class TestAvg:
def __init__(self):

self.arayuz=tkinter.Tk()

self.test1_frame=tkinter.Frame(self.arayuz)
self.test2_frame=tkinter.Frame(self.arayuz)
self.test3_frame=tkinter.Frame(self.arayuz)
self.avg_frame=tkinter.Frame(self.arayuz)
self.button_frame=tkinter.Frame(self.arayuz)

self.test1_label=tkinter.Label(self.test1_frame, text='Enter the scote test 1 = ')
self.test1_entry=tkinter.Entry(self.test1_frame,width=10)
self.test1_label.pack(side='left')
self.test1_entry.pack(side='left')

self.test2_label = tkinter.Label(self.test2_frame, text='Enter the scote test 2 = ')
self.test2_entry = tkinter.Entry(self.test2_frame, width=10)
self.test2_label.pack(side='left')
self.test2_entry.pack(side='left')

self.test3_label = tkinter.Label(self.test3_frame, text='Enter the scote test 3 = ')
self.test3_entry = tkinter.Entry(self.test3_frame, width=10)
self.test3_label.pack(side='left')
self.test3_entry.pack(side='left')

self.result_label=tkinter.Label(self.avg_frame, text='Average= ')
self.avg=tkinter.StringVar()
self.avg_label=tkinter.Label(self.avg_frame,textvariable=self.avg)
self.result_label.pack(side='left')
self.avg_label.pack(side='left')

self.calc_button=tkinter.Button(self.button_frame,text='Average', command=self.calc_avg)
self.quit_buttob=tkinter.Button(self.button_frame,text='Quit', command=self.arayuz.destroy)

self.calc_button.pack(side='left')
self.quit_buttob.pack(side='left')

self.test1_frame.pack()
self.test2_frame.pack()
self.test3_frame.pack()
self.avg_frame.pack()
self.button_frame.pack()

tkinter.mainloop()

def calc_avg(self):
self.test1 = float(self.test1_entry.get())
self.test2 = float(self.test2_entry.get())
self.test3 = float(self.test3_entry.get())

self.average=(self.test1 + self.test2+self.test3) /3.0

self.avg.set(self.average)
test_avg=TestAvg()


Ekran Çıktısı:


7) Radio buton kullanımı:


import tkinter
import tkinter.messagebox

class MyGUI:
def __init__(self):
self.arayuz=tkinter.Tk()

self.top_flame=tkinter.Frame(self.arayuz)
self.bottom_flame=tkinter.Frame(self.arayuz)

self.radio_var=tkinter.IntVar()

self.radio_var.set(1)

self.rb1 = tkinter.Radiobutton(self.top_flame, text='Option 1', variable=self.radio_var, value= 1)
self.rb2 = tkinter.Radiobutton(self.top_flame, text='Option 2', variable=self.radio_var, value= 2)
self.rb3 = tkinter.Radiobutton(self.top_flame, text='Option 3', variable=self.radio_var, value= 3)

self.rb1.pack()
self.rb2.pack()
self.rb3.pack()

self.ok_button=tkinter.Button(self.bottom_flame, text='OK', command=self.show_choice)
self.quit_button=tkinter.Button(self.bottom_flame,text='Quit', command=self.arayuz.destroy)

self.ok_button.pack(side='left')
self.quit_button.pack(side='left')

self.top_flame.pack()
self.bottom_flame.pack()

tkinter.mainloop()

def show_choice(self):
tkinter.messagebox.showinfo('Selection', 'You selected option '+ str(self.radio_var.get()))

my_gui=MyGUI()


Ekran Çıktısı:


8) Checkbutton kullanımı:


import tkinter
import tkinter.messagebox

class MyGUI:
def __init__(self):
self.arayuz=tkinter.Tk()

self.top_frame =tkinter.Frame(self.arayuz)
self.bottom_flame=tkinter.Frame(self.arayuz)

self.cb_var1=tkinter.IntVar()
self.cb_var2=tkinter.IntVar()
self.cb_var3=tkinter.IntVar()

self.cb_var1.set(0)
self.cb_var2.set(0)
self.cb_var3.set(0)

self.cb1=tkinter.Checkbutton(self.top_frame,text='Option 1 ', variable=self.cb_var1)
self.cb2=tkinter.Checkbutton(self.top_frame,text='Option 2 ', variable=self.cb_var2)
self.cb3=tkinter.Checkbutton(self.top_frame,text='Option 3 ', variable=self.cb_var3)

self.cb1.pack()
self.cb2.pack()
self.cb3.pack()

self.ok_button=tkinter.Button(self.bottom_flame,text='OK',command=self.show_choice)
self.quit_button=tkinter.Button(self.bottom_flame,text='Quit',command=self.arayuz.destroy)

self.ok_button.pack(side='left')
self.quit_button.pack(side='left')

self.top_frame.pack()
self.bottom_flame.pack()

tkinter.mainloop()

def show_choice(self):
self.message='You selected:\n'

if self.cb_var1.get()==1:
self.message=self.message+'1\n'
if self.cb_var2.get()==1:
self.message=self.message+'2\n'
if self.cb_var3.get()==1:
self.message=self.message+'3\n'
tkinter.messagebox.showinfo('Selection', self.message)

my_gui=MyGUI()

Ekran Çıktısı: