Uygulama bildirimi "widget", widget'lar, bir css sınıfı ve davranışların bir karışımıdır.
Uygulama bildirimlerini kullanmayı planladığınız pencerede bir Gtk.Overlay kullanmalı ve önceden tanımlı app-notification
sınıfıyla bir Gtk.Frame kullanmalısınız. Gtk.Frame, "slayt" geçişini sağlamak için bir Gtk.Revealer içine sarılmalıdır. kullanan bazı piton kodu burada
Ve edilir: Glade'de
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<property name="default_width">440</property>
<property name="default_height">250</property>
<child>
<object class="GtkOverlay" id="overlay1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">APP-NOTIFICATION EXAMPLE</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button1">
<property name="label" translatable="yes">show app-notification</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="index">-1</property>
</packing>
</child>
<child type="overlay">
<object class="GtkOverlay" id="overlay2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
<child>
<object class="GtkRevealer" id="revealer2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<child>
<object class="GtkFrame" id="frame2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkBox" id="box2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">20</property>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">This is an app-notification. Click the button to dismiss</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="relief">none</property>
<child>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">window-close-symbolic</property>
</object>
</child>
<style>
<class name="image-button"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
<style>
<class name="app-notification"/>
</style>
</object>
</child>
</object>
<packing>
<property name="pass_through">True</property>
<property name="index">-1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
Sonuç: Burada
bir glade ui bir örnekle dosyası (app-notification.ui) 'dir önceki glade dosyasını ve bildirim için bazı dinamik davranışlar verir, böylece düğmelerini tıklatarak eylemde görebilmenizi sağlar. Glade dosyası aksi verilen ad yansıtacak şekilde kodunu değiştirmek, app-notification.ui adlı olmalıdır:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
def onButtonShow(self):
revealer.set_reveal_child(True)
def onButtonClose(self):
revealer.set_reveal_child(False)
builder = Gtk.Builder()
builder.add_from_file("app-notification.ui")
window = builder.get_object("window1")
buttonShow = builder.get_object("button1")
buttonClose = builder.get_object ("button2")
revealer = builder.get_object("revealer2")
buttonShow.connect ("clicked", onButtonShow)
buttonClose.connect ("clicked", onButtonClose)
window.connect ("destroy", Gtk.main_quit)
window.show_all()
Gtk.main()
Bunu kullanmak istiyorum kendim :) Bu nedenle bağlantıya yönelik bir API referansı bildirmek için özgürlük aldı sayfanın sonunda. – theGtknerd
Zaten bir posta göndermek bugün, belki çok uzun sürmez :) – microo8
microo8 @theGtknerd cevabı kontrol edin. –