Linux'ta PyGobject Aracını Kullanarak Daha Gelişmiş GUI Uygulamaları Oluşturun - Bölüm 2


PyGObject kullanarak Linux masaüstü altında GUI uygulamaları oluşturma serimize devam ediyoruz. Bu serinin ikinci kısmı ve bugün bazı gelişmiş widget'ları kullanarak daha işlevsel uygulamalar oluşturmaktan bahsedeceğiz.

Gereksinimler

  1. PyGObject Kullanarak Linux Altında GUI Uygulamaları Oluşturma – Bölüm 1

Önceki makalede PyGObject kullanarak GUI uygulamaları oluşturmanın iki yolu olduğunu söylemiştik: yalnızca kod yolu ve Glade tasarımcı yolu ancak bundan sonra yalnızca Glade tasarımcı yöntemini açıklayacağız çünkü çoğu kullanıcı için çok daha kolay, python-gtk3-tutorial'ı kullanarak yalnızca kod yolunu kendiniz öğrenebilirsiniz.

Linux'ta İleri GUI Uygulamaları Oluşturma

1. Programlamaya başlayalım! Uygulamalar menüsünden Glade tasarımcınızı açın.

2. Yeni bir tane oluşturmak için sol kenar çubuğundaki “Pencere ” düğmesini tıklayın.

3.Kutu ” widget'ına tıklayın ve onu boş pencerede bırakın.

4. İstediğiniz kutu sayısını girmeniz istenecektir; 3 yapın.

Ve kutuların oluşturulduğunu göreceksiniz; bir pencereye 1 widget'tan fazlasını ekleyebilmemiz açısından bu kutular bizim için önemlidir.

5. Şimdi kutu widget'ını tıklayın ve yönlendirme türünü dikey yerine yatay olarak değiştirin.

6. Basit bir program oluşturmak için bir “Metin Girişi ”, “Birleşik Kutu Metni ” ve bir “Düğme” ekleyin ” kutucukların her biri için widget'lar kullanıyorsanız buna benzer bir şeye sahip olmalısınız.

7. Şimdi sağ kenar çubuğundan “pencere1 ” widget'ını tıklayın ve konumunu “Merkez” olarak değiştirin.

Görünüm” bölümüne ilerleyin. Ve “Programım” penceresi için bir başlık ekleyin.

8. Ayrıca “Simge Adı” kutusunu tıklayarak pencere için bir simge de seçebilirsiniz.

9. Ayrıca uygulamanın varsayılan yüksekliğini ve genişliğini de değiştirebilirsiniz. Tüm bunlardan sonra, buna benzer bir şeye sahip olmalısınız.

Herhangi bir programda en önemli şeylerden biri “Hakkında” penceresi oluşturmaktır, bunu yapmak için önce daha önce oluşturduğumuz normal düğmeyi bir stok düğmesine değiştirmemiz gerekecek, şuna bakın: fotoğraf.

10. Şimdi, widget'larımızda herhangi bir olay meydana geldiğinde belirli eylemleri yürütmek için bazı sinyalleri değiştirmemiz gerekecek. Metin girişi widget'ını tıklayın, sağ kenar çubuğundaki “Sinyaller” sekmesine geçin, “etkin” ifadesini arayın ve işleyicisini şu şekilde değiştirin: “enter_button_clicked”, “active” sinyali, metne odaklanırken “Enter” tuşuna basıldığında gönderilen varsayılan sinyaldir. giriş widget'ı.

Hakkında düğmesi widget'ımız için "tıklandı" sinyali için başka bir işleyici eklememiz, ona tıklamamız ve "tıklandı" sinyalini "button_is_clicked" olarak değiştirmemiz gerekecek “.

11.Ortak ” sekmesine gidin ve “Odak Var” seçeneğini aşağıdaki gibi işaretleyin (Hakkında düğmesine varsayılan odağı vermek için) giriş yerine).

12. Şimdi sol kenar çubuğundan yeni bir “Hakkında İletişim Kutusu” penceresi oluşturun.

Ve “Hakkında İletişim Kutusu” penceresinin oluşturulduğunu fark edeceksiniz.

Hadi değiştirelim.. Sağ kenar çubuğundan aşağıdaki ayarları eklediğinizden emin olun.

Yukarıdaki ayarları yaptıktan sonra Window ile ilgili aşağıdakileri alacaksınız.

Yukarıdaki pencerede boş alanı fark edeceksiniz ancak kutu sayısını 3'ten 2'ye düşürerek kaldırabilirsiniz veya isterseniz içine herhangi bir widget ekleyebilirsiniz.

13. Şimdi dosyayı “ui.glade” adıyla ana klasörünüze kaydedin ve bir metin düzenleyici açın ve içine aşağıdaki kodu girin.


#!/usr/bin/python
-*- coding: utf-8 -*-

from gi.repository import Gtk
class Handler:

    def button_is_clicked(self, button):
        ## The ".run()" method is used to launch the about window.
         ouraboutwindow.run()
        ## This is just a workaround to enable closing the about window.
         ouraboutwindow.hide()

    def enter_button_clicked(self, button):
        ## The ".get_text()" method is used to grab the text from the entry box. The "get_active_text()" method is used to get the selected item from the Combo Box Text widget, here, we merged both texts together".
         print ourentry.get_text() + ourcomboboxtext.get_active_text()

## Nothing new here.. We just imported the 'ui.glade' file.
builder = Gtk.Builder()
builder.add_from_file("ui.glade")
builder.connect_signals(Handler())

ournewbutton = builder.get_object("button1")

window = builder.get_object("window1")

## Here we imported the Combo Box widget in order to add some change on it.
ourcomboboxtext = builder.get_object("comboboxtext1")

## Here we defined a list called 'default_text' which will contain all the possible items in the Combo Box Text widget.
default_text = [" World ", " Earth ", " All "]

## This is a for loop that adds every single item of the 'default_text' list to the Combo Box Text widget using the '.append_text()' method.
for x in default_text:
  ourcomboboxtext.append_text(x)

## The '.set.active(n)' method is used to set the default item in the Combo Box Text widget, while n = the index of that item.
ourcomboboxtext.set_active(0)
ourentry = builder.get_object("entry1")

## This line doesn't need an explanation :D
ourentry.set_max_length(15)

## Nor this do.
ourentry.set_placeholder_text("Enter A Text Here..")

## We just imported the about window here to the 'ouraboutwindow' global variable.
ouraboutwindow = builder.get_object("aboutdialog1")

## Give that developer a cookie !
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main

Dosyayı ana dizininize “myprogram.py” adı altında kaydedin ve yürütme iznini verin ve çalıştırın.

chmod 755 myprogram.py
./myprogram.py
This is what you will get, after running above script.

Giriş kutusuna bir metin girin, klavyedeki “Enter” tuşuna basın; cümlenin kabukta yazdırıldığını fark edeceksiniz.

Şimdilik bu kadar, tam bir uygulama değil, ancak size PyGObject kullanarak işleri nasıl birbirine bağlayacağınızı göstermek istedim, tüm GTK widget'larına ilişkin tüm yöntemleri şu adreste görüntüleyebilirsiniz: gtkobjects.

Sadece yöntemleri öğrenin, Glade'i kullanarak widget'ları oluşturun ve Python dosyasını kullanarak sinyalleri bağlayın, işte bu kadar! Hiç de zor değil dostum.

Serinin sonraki bölümlerinde PyGObject hakkında daha fazla yeni şey açıklayacağız, o zamana kadar güncel kalın ve makale hakkındaki yorumlarınızı bize iletmeyi unutmayın.