Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Σύνδεση αρχείου glade με events και callbacks σε python

Σύνδεση αρχείου glade με events και callbacks σε python 6 Χρόνια 1 Εβδομάδα πριν #5224

  • becoming_i
  • Το Άβαταρ του/της becoming_i
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 15
  • Ληφθείσες Ευχαριστίες 1
Εδώ και κάτι μέρες έχω σχεδιάσει ένα GUI στο glade (GTK GUI designer για Linux) αλλά δεν μπορώ να συνδέσω τα events με callbacks για να επανεμφανίζω στο GUI τα αποτελέσματα των clicks.

Με λίγα λόγια, θέλω να φτιάξω ένα ημερολόγιο το οποίο με κλικ στην ημερομηνία να κάνει export μια μεταβλητή σε ένα bash script (το οποίο το έχω ήδη γράψει) για να τυπώνει την αντίστοιχη γιορτή ανά μέρα. Στη συνέχεια το αποτέλεσμα να εμφανίζεται σε ένα bοx μέσα στο GUI. Το ίδιο γίνεται και με ένα
button το οποίο θα κάνει υπολογισμό του Πάσχα.

Ακολοθούν

Ο κώδικας του αρχείου calendari.glade
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
  <requires lib="gtk+" version="3.20"/>
  <object class="GtkWindow" id="Εορτολόγιο GTi">
    <property name="can_focus">False</property>
    <property name="default_width">640</property>
    <property name="default_height">400</property>
    <child>
      <placeholder/>
    </child>
    <child>
      <object class="GtkBox">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <child>
          <object class="GtkCalendar">
            <property name="width_request">640</property>
            <property name="height_request">100</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="year">2018</property>
            <property name="month">11</property>
            <property name="day">7</property>
            <signal name="day-selected" handler="onDayClicked" object="Εορτολόγιο GTi" swapped="no"/>
          </object>
          <packing>
            <property name="expand">True</property>
            <property name="fill">True</property>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkTextView">
            <property name="height_request">100</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="hscroll_policy">natural</property>
            <property name="vscroll_policy">natural</property>
            <property name="editable">False</property>
            <property name="cursor_visible">False</property>
            <property name="overwrite">True</property>
            <property name="accepts_tab">False</property>
          </object>
          <packing>
            <property name="expand">True</property>
            <property name="fill">True</property>
            <property name="position">1</property>
          </packing>
        </child>
        <child>
          <object class="GtkButton">
            <property name="label" translatable="yes">Υπολογισμός Πάσχα</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <property name="always_show_image">True</property>
            <signal name="clicked" handler="onButtonPressed" swapped="no"/>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">True</property>
            <property name="pack_type">end</property>
            <property name="position">2</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

Και ο κώδικας του python προγράμματος
import gi
import subprocess
 
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
 
class Handler:
 
    def onDestroy(self, *args):
        Gtk.main_quit()
 
    def onButtonPressed(self, button):
        print(subprocess.getoutput("sh easter.sh"))
 
    def onDayClicked(self, button):
        print("Hello World!") 
 
builder = Gtk.Builder()
builder.add_from_file("calendari.glade")
builder.connect_signals(Handler())
window = builder.get_object("Εορτολόγιο GTi")
 
window.show_all()
Gtk.main()
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.353 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου