# Καταχώριση (Python)

Marta Maria Casetti
2012
Sebastian Pölsterl
sebp@k-d-w.org 2011
Ένα πεδίο καταχώρισης κειμένου μοναδικής γραμμής
Δημήτρης Σπίγγος
dmtrs32@gmail.com 2012, 2013

# Καταχώριση

Αυτή η εφαρμογή σας χαιρετά στον τερματικό με το όνομα που δώσατε.

# Ο χρησιμοποιούμενος κώδικας για παραγωγή αυτού παραδείγματος

from gi.repository import Gtk import sys

class MyWindow(Gtk.ApplicationWindow):

def __init__(self, app): Gtk.Window.__init__(self, title="What is your name?", application=app) self.set_default_size(300, 100) self.set_border_width(10)

# a single line entry name_box = Gtk.Entry() # emits a signal when the Enter key is pressed, connected to the # callback function cb_activate name_box.connect("activate", self.cb_activate)

# add the Gtk.Entry to the window self.add(name_box)

# the content of the entry is used to write in the terminal def cb_activate(self, entry): # retrieve the content of the widget name = entry.get_text() # print it in a nice form in the terminal print "Hello " + name + "!"

class MyApplication(Gtk.Application):

def __init__(self): Gtk.Application.__init__(self)

def do_activate(self): win = MyWindow(self) win.show_all()

def do_startup(self): Gtk.Application.do_startup(self)

app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)

# Χρήσιμες μέθοδοι για γραφικό συστατικό εισαγωγής

Στη γραμμή 14 το σήμα `"activate"` συνδέεται με τη συνάρτηση επανάκλησης `cb_activate()` χρησιμοποιώντας `widget.connect(signal, callback function)`. Δείτε για μια πιο λεπτομερή εξήγηση. Μερικά από τα σήματα που το γραφικό συστατικό Gtk.Entry μπορεί να εκπέμψει είναι: `"activate"` (εκπεμπόμενο όταν ο χρήστης ενεργοποιεί το πλήκτρο εισαγωγής)· `"backspace"` (εκπεμπόμενο όταν ο χρήστης ενεργοποιεί την οπισθοδιαγραφή ή τα πλήκτρα Shift-οπισθοδιαγραφή)· `"copy-clipboard"` (Ctrl-c και Ctrl-Insert); `"paste-clipboard"` (Ctrl-v και Shift-Insert); `"delete-from-cursor"` (διαγραφή, για να διαγραφτεί ένας χαρακτήρας· Ctrl-διαγραφή, για να διαγραφτεί μια λέξη)· `"icon-press"` (εκπεμπόμενο όταν ο χρήστης πατά ένα ενεργοποιήσιμο εικονίδιο)· `"icon-release"` (εκπεμπόμενο με την απελευθέρωση του κουμπιού από ένα πάτημα του ποντικιού πάνω από ένα ενεργοποιήσιμο εικονίδιο)· `"insert-at-cursor"` (εκπεμπόμενο όταν ο χρήστης αρχικοποιεί την εισαγωγή μιας σταθερής συμβολοσειράς στον δρομέα)· `"move-cursor"` (εκπεμπόμενο όταν ο χρήστης αρχικοποιεί μια μετακίνηση δρομέα)· `"populate-popup"` (εκπεμπόμενο πριν την προβολή του μενού περιεχομένου της εισαγωγής· μπορεί να χρησιμοποιηθεί για προσθήκη στοιχείων σε αυτή).

`get_buffer()` και `set_buffer(buffer)`, όπου `buffer` είναι ένα αντικείμενο Gtk.EntryBuffer, μπορούν να χρησιμοποιηθούν για λήψη και ορισμό της ενδιάμεσης μνήμης για την εισαγωγή.

`get_text()` και `set_text("some text")` μπορούν να χρησιμοποιηθούν για λήψη και ορισμό του περιεχομένου για την εισαγωγή.

`get_text_length()` είναι αυτονόητο.

`get_text_area()` δέχεται την περιοχή όπου το κείμενο εισαγωγής σύρεται.

Εάν ορίζουμε `set_visibility(False)` οι χαρακτήρες στην καταχώριση εμφανίζονται ως ο αόρατος χαρακτήρας. Αυτό είναι καλύτερα διαθέσιμο στην τρέχουσα γραμματοσειρά, αλλά μπορεί να αλλαχθεί με `set_invisible_char(ch)`, όπου `ch` είναι ένας χαρακτήρας Unicode. Η τελευταία μέθοδος αντιστρέφεται με τον `unset_invisbile_char()`.

`set_max_length(int)`, όπου `int` είναι ένας ακέραιος, που περικόπτει κάθε καταχώριση μεγαλύτερη από `int` για να έχει το επιθυμητό μέγιστο μήκος.

Από προεπιλογή, εάν πατήσετε το πλήκτρο καταχώρισης η Gtk.Entry εκπέμπει το σήμα `"activate"`. Εάν θα θέλατε να ενεργοποιήσετε το προεπιλεγμένο γραφικό συστατικό για το παράθυρο (ορίστε χρησιμοποιώντας τον `set_default(widget)` στο παράθυρο), έπειτα χρησιμοποιήστε `set_activates_default(True)`.

Για τον ορισμό ενός πλαισίου γύρω από την καταχώριση: `set_has_frame(True)`.

Ο `set_placeholder_text("some text")` ορίζει το εμφανιζόμενο κείμενο στην καταχώριση όταν είναι κενό και χωρίς εστίαση.

`set_overwrite_mode(True)` και `set_overwrite_mode(False)` είναι αυτονόητα.

Εάν έχουμε `set_editable(False)` ο χρήστης δεν μπορεί να επεξεργαστεί το κείμενο στο γραφικό συστατικό.

`set_completion(completion)`, όπου `completion` είναι ένας `Gtk.EntryCompletion`, ορίζει την ολοκλήρωση - ή το απενεργοποιεί εάν η `completion` είναι `None`.

Ένα γραφικό συστατικό καταχώρισης μπορεί να εμφανίσει πρόοδο ή πληροφορίες δραστηριότητας πίσω από το κείμενο. Χρησιμοποιούμε `set_progress_fraction(fraction)`, όπου `fraction` είναι ένας `float` between `0.0` και `1.0` συμπεριλαμβανόμενου, για να συμπληρώσει τη δεδομένο κλάσμα της γραμμής. Χρησιμοποιούμε `set_progress_pulse_step()` για τον ορισμό του κλάσματος του συνολικού πλάτους καταχώρισης για να μετακινήσουμε την ομάδα αναπήδησης προόδου για κάθε κλήση στον `progress_pulse()`. Η τελευταία μέθοδος δείχνει ότι κάποια πρόοδος έχει γίνει και προκαλεί τον δείκτη προόδου της καταχώρισης να μπει στην "activity mode", όπου μια ομάδα αναπηδά πίσω και μπρος. Κάθε κλήση στον `progress_pulse()` προκαλεί την μετακίνηση της ομάδας λιγο (η ποσότητα της μετακίνησης ανά παλμό καθορίζεται, όπως ειπώθηκε πριν, κατά `set_progress_pulse_step()`).

Ένα γραφικό συστατικό καταχώρισης μπορεί επίσης να εμφανίσει εικονίδια. Αυτά τα εικονίδια που μπορούν να ενεργοποιηθούν με κλικ, μπορούν να οριστούν ως πηγή μεταφοράς και μπορούν να έχουν συμβουλές οθόνης. Για την προσθήκη ενός εικονιδίου, χρησιμοποιήστε `set_icon_from_stock(icon_position, stock_id)`, ή ένα από τα `set_icon_from_pixbuf(icon_position, pixbuf)`, `set_icon_from_icon_name(icon_position, icon_name)`, όπου `icon_position` είναι ένα από `Gtk.EntryIconPosition.PRIMARY` (για τον ορισμό του εικονιδίου στην αρχή της καταχώρισης) `Gtk.EntryIconPosition.SECONDARY` (για τον ορισμό του εικονιδίου στο τέλος της καταχώρισης). Για τον ορισμό μιας συμβουλής οθόνης σε ένα εικονίδιο, χρησιμοποιήστε `set_icon_tooltip_text("tooltip text")` ή `set_icon_tooltip_markup("tooltip text in Pango markup language")`.

# Αναφορές API

Σε αυτό το παράδειγμα χρησιμοποιήσαμε τα παρακάτω:

GtkEntry