فهرست بستن

پایتون دیلینده Gtk ایله ایشله‌دیچی رابطلی یازیلیملار یازماق (آتدیم آتدیم کیچیک مثاللارلا، بیرینجی بؤلوم)

عموم ایشله‌دیچیلر اوچون یازیلان یازیلیملارا، ایشلنمه‌سینین راحاتلیغی ان مهم خصوصیت ساییلیر. اونون اوچون ده ایشله‌دیچی رابطلرین نئجه یازیلماسینی باشارماق هر بیر یازیلیملاییچییا گرک دیر. ایشله‌دیچی رابطلرینین یازماسی اوچون حاضرلانمیش کیتابخانالاردان بیری Gtk کیتابخاناسی دیر. بو یازیدا بو کیتابخانانین ایشله‌دیچی رابط یاراتماق اوچون نئجه ایشلنمه‌سی آچیقلاناجاق.

بسم الله الرحمن الرحیم

ایشله‌دیچی رابطده مشغول اولاجاغیمیز پنجره، یازدیغیمیز یازیلیم دا اؤز اساس صفتلرینی Gtk.Window ـدان ارث آپاراجاق دیر. ایلک مثال بوش بیر ایشله‌دیچی رابطلی یازیلیم دیر. بو ایشله‌دیچی رابط اوچون بیرینجی آتدیمدا باشلیق، آیکون، پنجره‌نین ان بویو و ان بویونون دییشیله‌بیلیب بیلمه‌مگی تعریفله‌نیب دیر:

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gio, Gdk


class mainWin(Gtk.Window):
    
    def __init__(self):
        Gtk.Window.__init__(self, title="منیم ایشله‌دیچی رابطلی یازیلیمیم")
        
        self.connect("delete_event", self.delete_event)
        self.connect("destroy", self.destroy)
        
        self.set_icon_from_file("./icon.png")
        self.set_border_width(10)
        self.set_default_size(500, 400)
        self.set_resizable(False)
    
    def delete_event(self, widget, event, data=None):
        return False
    
    def destroy(self, widget, data=None):
        Gtk.main_quit()
    


if __name__ == "__main__":
    win = mainWin()
    win.show_all()
    Gtk.main()

گؤردوگونوز کُدلاردا ایشله‌نه‌جک کیتابخانالاری چاغیرماقدان سونرا mainWin آدلی بیر کلاس، خصوصیتلرینی Gtk.Windowــدان ارثله‌نه‌ره‌ک، یارانمیشدیر. بو کلاسین یارادیچی تابعینده هانسی بیر ایشدن اوّل Gtk.Window یارادیچی تابعی ایسته‌دیگیمیز پارامترلرله چاغریلیبدیر. گؤزدن گئچیردیگیمیز مثالدا بو پارامترلر یالنیز یاسالاجاق پنجره‌نین باشلیغی title دیر. اوندان سونرا ایکی اهمیتلی اولای ایله یازدیغیمیز ایکی تابع آراسیندا ارتباط قورماق دیر. بونون اوچون Gtk.Windowـدان ارثله‌نن connect تابعی ایشلنمه‌لی دیر. بو ایکی اولایدان بیری delete_event دیر، باشقاسی ایسه destroy دور. بیرینجینین آچیقلاماسینا گلیرسه‌ک، اونو سیستمدن یازدیغیمیز یازیلیم اوچون قاپاتیلماغا حاضرلیغی سوروشان بیر سیگنال تعریفله‌یه‌بیله‌ریک. داها بسیط دیل ایله سیستم بیزیم یازیلیمیمیزی قاپاتیر ایکن delete_event سیگنالینا وصل اولان تابع چاغریلیر. تابع ۰ یوخسا False قایتاریر ایسه، یازیلیم قاپاتیلماغا حاضیردیر دئیه آنلامی وار دیر، لکن بیر یوخسا True قایتاریر ایسه حاضیر اولمادیغینی بیلدیریر. عادی وضعیتده تابعین False قایتارماسینی فرض ائتسه‌ک سیستم destroy سیگنالینا باغلانان تابعی چاغیراجاق دیر. بو تابع ایسه قاپاتیلماقدان قاباق گرک اولان ایشلری گؤروب Gtk.main_quit تابعییله ایشی بیتیره‌جکدیر.

بو ایکی سیگنالی تابعلرینه وصل ائتمکدن سونرا دؤرد سطرده گؤروشن پنجره‌نین خصوصیتلری معیّنله‌شیبدیر. بیرینجی سطرده آیکون، ایکینجیده حاشیه‌نین انی، اوچونجوده پنجره‌نین ان بویو و دؤردونجوده ایسه پنجره‌نین ان بویونون دیشیله‌بیلیب بیلمه‌مگی تعیین اولوب. delete_event و destroy تابعلرینین ایشی ده آچیقلاندی. بو مثالدان سونرا پنجره‌یه بیر دوگمه آرتیرماقلا بیرینجی بؤلومو سونا چاتدیراجاغیق:

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gio, Gdk


class mainWin(Gtk.Window):
    
    def __init__(self):
        Gtk.Window.__init__(self, title="منیم ایشله‌دیچی رابطلی یازیلیمیم")
        
        self.connect("delete_event", self.delete_event)
        self.connect("destroy", self.destroy)
        
        self.set_icon_from_file("./icon.png")
        self.set_border_width(10)
        self.set_default_size(500, 400)
        self.set_resizable(False)
        
        hbox = Gtk.Box(spacing=6)
        self.add(hbox)
        
        button = Gtk.Button.new_with_label("باس")
        button.connect("clicked", self.on_click)
        hbox.pack_start(button, True, True, 0)
        
    def delete_event(self, widget, event, data=None):
        return False
    
    def destroy(self, widget, data=None):
        Gtk.main_quit()
    
    def on_click(self, button):
        print("دوگمه باسیلدی!")


if __name__ == "__main__":
    win = mainWin()
    win.show_all()
    Gtk.main()

بو کُدلاردا پنجره‌نی حاضرلاماقدان علاوه بیر hbox یارادیلیب و پنجره‌یه آرتیریایبدیر. hbox گؤروشن ویجتلری (دوگمه، یازماق یئری و …) افقی اولاراق اؤزونده ساخلایار. hboxـدان سونرا بیر دوگمه یارادیلیب و کلیک سیگنالی on_clickتابعینه وصل اولوب و سوندا hbox باشلانیشینا آرتیریلیب دیر. کلاسا بیر یئنی تابع ده اضافه‌لشمیشدیر. on_click تابعی دوگمه باسیلماقلا چاغیریلاجاق دیر و ترمینالدا بیر متن گؤرسه‌ده‌جکدیر.

پایتون دیلینده Gtk ایله ایشله‌دیچی رابطلی یازیلیملار یازماغین بیرینجی بؤلومو بورادا سونا چاتدی. ایکینجی بؤلومده Gtkـنین باشقا امکانلارینا گؤره سؤز سوروله‌جکدیر.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *