|
Packit |
1470ea |
|
|
Packit |
1470ea |
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2001/XInclude" type="guide" style="task" id="textview.py" xml:lang="el">
|
|
Packit |
1470ea |
<info>
|
|
Packit |
1470ea |
<title type="text">Προβολή κειμένου (TextView) (Python)</title>
|
|
Packit |
1470ea |
<link type="guide" xref="beginner.py#multiline"/>
|
|
Packit |
1470ea |
<link type="seealso" xref="strings.py"/>
|
|
Packit |
1470ea |
<link type="seealso" xref="scrolledwindow.py"/>
|
|
Packit |
1470ea |
<link type="next" xref="dialog.py"/>
|
|
Packit |
1470ea |
<revision version="0.2" date="2012-06-19" status="draft"/>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<credit type="author copyright">
|
|
Packit |
1470ea |
<name>Sebastian Pölsterl</name>
|
|
Packit |
1470ea |
<email its:translate="no">sebp@k-d-w.org</email>
|
|
Packit |
1470ea |
<years>2011</years>
|
|
Packit |
1470ea |
</credit>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<credit type="author copyright editor">
|
|
Packit |
1470ea |
<name>Marta Maria Casetti</name>
|
|
Packit |
1470ea |
<email its:translate="no">mmcasetti@gmail.com</email>
|
|
Packit |
1470ea |
<years>2012</years>
|
|
Packit |
1470ea |
</credit>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<desc>Γραφικό στοιχείο που εμφανίζει ένα GtkTextBuffer</desc>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
|
|
Packit |
1470ea |
<mal:name>Ελληνική μεταφραστική ομάδα GNOME</mal:name>
|
|
Packit |
1470ea |
<mal:email>team@gnome.gr</mal:email>
|
|
Packit |
1470ea |
<mal:years>2012-2015</mal:years>
|
|
Packit |
1470ea |
</mal:credit>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
|
|
Packit |
1470ea |
<mal:name>Δημήτρης Σπίγγος</mal:name>
|
|
Packit |
1470ea |
<mal:email>dmtrs32@gmail.com</mal:email>
|
|
Packit |
1470ea |
<mal:years>2012, 2013</mal:years>
|
|
Packit |
1470ea |
</mal:credit>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
|
|
Packit |
1470ea |
<mal:name>Μαρία Θουκιδίδου</mal:name>
|
|
Packit |
1470ea |
<mal:email>marablack3@gmail.com</mal:email>
|
|
Packit |
1470ea |
<mal:years>2014</mal:years>
|
|
Packit |
1470ea |
</mal:credit>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
|
|
Packit |
1470ea |
<mal:name>Θάνος Τρυφωνίδης</mal:name>
|
|
Packit |
1470ea |
<mal:email>tomtryf@gmail.com</mal:email>
|
|
Packit |
1470ea |
<mal:years>2014, 2015</mal:years>
|
|
Packit |
1470ea |
</mal:credit>
|
|
Packit |
1470ea |
</info>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<title>Προβολή κειμένου (TextView)</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<note style="sidebar">Αυτό είναι ένα παράδειγμα του Gtk.TextView.
|
|
Packit |
1470ea |
Εάν πατήσετε "enter", έχουμε νέα γραμμή.
|
|
Packit |
1470ea |
Αλλά μπορούμε επίσης να έχουμε μια νέα γραμμή εάν γράψουμε μια μεγάλη πρόταση (το κείμενο θα αναδιπλωθεί διακόπτοντας τις γραμμές μεταξύ των λέξεων).
|
|
Packit |
1470ea |
Εάν έχουμε μια μεγάαααααααααααααααααααααααααααααααλη
|
|
Packit |
1470ea |
(που ήταν μεγάλη)
|
|
Packit |
1470ea |
λέξη, μια οριζόντια γραμμή κύλισης θα εμφανιστεί. </note>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<media type="image" mime="image/png" src="media/textview.png"/>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<links type="section"/>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="code">
|
|
Packit |
1470ea |
<title>Ο χρησιμοποιούμενος κώδικας για παραγωγή αυτού παραδείγματος</title>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
from gi.repository import Gtk
|
|
Packit |
1470ea |
import sys
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
class MyWindow(Gtk.ApplicationWindow):
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
def __init__(self, app):
|
|
Packit |
1470ea |
Gtk.Window.__init__(self, title="TextView Example", application=app)
|
|
Packit |
1470ea |
self.set_default_size(300, 450)
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
# a scrollbar for the child widget (that is going to be the textview)
|
|
Packit |
1470ea |
scrolled_window = Gtk.ScrolledWindow()
|
|
Packit |
1470ea |
scrolled_window.set_border_width(5)
|
|
Packit |
1470ea |
# we scroll only if needed
|
|
Packit |
1470ea |
scrolled_window.set_policy(
|
|
Packit |
1470ea |
Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
# a text buffer (stores text)
|
|
Packit |
1470ea |
buffer1 = Gtk.TextBuffer()
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
# a textview (displays the buffer)
|
|
Packit |
1470ea |
textview = Gtk.TextView(buffer=buffer1)
|
|
Packit |
1470ea |
# wrap the text, if needed, breaking lines in between words
|
|
Packit |
1470ea |
textview.set_wrap_mode(Gtk.WrapMode.WORD)
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
# textview is scrolled
|
|
Packit |
1470ea |
scrolled_window.add(textview)
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
self.add(scrolled_window)
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
class MyApplication(Gtk.Application):
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
def __init__(self):
|
|
Packit |
1470ea |
Gtk.Application.__init__(self)
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
def do_activate(self):
|
|
Packit |
1470ea |
win = MyWindow(self)
|
|
Packit |
1470ea |
win.show_all()
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
def do_startup(self):
|
|
Packit |
1470ea |
Gtk.Application.do_startup(self)
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
app = MyApplication()
|
|
Packit |
1470ea |
exit_status = app.run(sys.argv)
|
|
Packit |
1470ea |
sys.exit(exit_status)
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="methods">
|
|
Packit |
1470ea |
<title>Χρήσιμες μέθοδοι για ένα γραφικό στοιχείο TextView</title>
|
|
Packit |
1470ea |
Μια Gtk.TextView εμφανίζει το αποθηκευμένο κείμενο σε μια Gtk.TextBuffer . Όμως, η περισσότερη επεξεργασία του κειμένου πραγματοποιείται με επαναλήπτες, αντιπροσωπευόμενοι από ένα Gtk.TextIter - μια θέση μεταξύ δύο χαρακτήρων στην ενδιάμεση μνήμη του κειμένου. Οι επαναλήπτες δεν είναι έγκυροι επ' άπειρο· όποτε η ενδιάμεση μνήμη τροποποιείται με τρόπο που επηρεάζει τα περιεχόμενα της ρυθμιστικής μνήμης, όλοι οι εκκρεμείς επαναλήπτες γίνονται άκυροι. Λόγω αυτού, οι επαναλήπτες δεν μπορούν να χρησιμοποιηθούν για να διατηρήσουν τις θέσεις με τις τροποποιήσεις της ενδιάμεσης μνήμης. Για να διατηρήσετε μια θέση, χρησιμοποιούμε ένα Gtk.TextMark , που μπορεί να οριστεί ορατό με visible(True) . Μια ενδιάμεση μνήμη κειμένου περιέχει δύο ενσωματωμένα σημάδια· ένα σημάδι "εισαγωγής" (η θέση του δρομέα) και το σημάδι "δέσμευση_επιλογής".
|
|
Packit |
1470ea |
Μέθοδοι για ένα γραφικό στοιχείο προβολής κειμένου (TextView):
|
|
Packit |
1470ea |
<list>
|
|
Packit |
1470ea |
<item>Το γραφικό στοιχείο TextView είναι από προεπιλογή επεξεργάσιμο. Εάν προτιμάτε αλλιώς, χρησιμοποιήστε set_editable(False) . Εάν η ενδιάμεση μνήμη δεν έχει επεξεργάσιμο κείμενο, ίσως να είναι μια καλή ιδέα να χρησιμοποιήσετε set_cursor_visible(False) επίσης. </item>
|
|
Packit |
1470ea |
<item>Η στοίχιση του κειμένου ορίζεται με set_justification(Gtk.Justification.JUSTIFICATION) όπου JUSTIFICATION είναι ένα από τα LEFT, RIGHT, CENTER, FILL . </item>
|
|
Packit |
1470ea |
<item>Η αναδίπλωση γραμμής του κειμένου ορίζεται με set_wrap_mode(Gtk.WrapMode.WRAP) όπου WRAP είναι ένα από NONE (η περιοχή του κειμένου γίνεται πλατύτερη), CHAR (η αλλαγή γραμμών οπουδήποτε ο δρομέας μπορεί να εμφανιστεί), WORD (αλλαγή γραμμών μεταξύ λέξεων), WORD_CHAR (αλλαγή γραμμών μεταξύ λέξεων, αλλά εάν αυτό δεν είναι αρκετό μεταξύ χαρακτήρων). </item>
|
|
Packit |
1470ea |
</list>
|
|
Packit |
1470ea |
Μέθοδοι για ένα γραφικό στοιχείο TextBuffer:
|
|
Packit |
1470ea |
<list>
|
|
Packit |
1470ea |
<item>Η get_insert() επιστρέφει το Gtk.TextMark που αναπαριστά τον δρομέα, που είναι το σημείο εισαγωγής. </item>
|
|
Packit |
1470ea |
<item>Η get_selection_bound() επιστρέφει το Gtk.TextMark που αναπαριστά την δεσμευμένη επιλογή. </item>
|
|
Packit |
1470ea |
<item>Ο set_text("some text", length) όπου length είναι ένας θετικός ακέραιος ή -1 , ορίζει το περιεχόμενο της ενδιάμεσης μνήμης ως τους πρώτους χαρακτήρες length του κειμένου "some text" . Εάν το length παραλείπεται ή -1 , το κείμενο εισάγεται πλήρως. Το περιεχόμενο της ενδιάμεσης μνήμης, εάν υπάρχει κάποια, καταστρέφεται. </item>
|
|
Packit |
1470ea |
<item>Η insert(iter, "some text", length) όπου iter είναι ένας επαναλήπτης κειμένου και length είναι ένας θετικός ακέραιος ή -1 , εισάγει στην ενδιάμεση μνήμη στο iter τους πρώτους χαρακτήρες length του κειμένου "some text" . Εάν το length παραληφθεί ή -1 , το κείμενο εισάγεται πλήρως. </item>
|
|
Packit |
1470ea |
<item>Η insert_at_cursor("some text", length) κάνει το ίδιο με την insert(iter, "some text", length) , με τον τρέχοντα δρομέα να λαμβάνεται ως iter . </item>
|
|
Packit |
1470ea |
<item>Η create_mark("mark_name", iter, left_gravity) όπου iter είναι ένα Gtk.TextIter και left_gravity είναι τιμή Μπουλ, δημιουργεί ένα Gtk.TextMark στη θέση του iter . Εάν "mark_name" είναι None , το σημάδι είναι ανώνυμο· αλλιώς, το σημάδι μπορεί να ανακτηθεί κατά όνομα χρησιμοποιώντας get_mark() . Εάν ένα σημάδι έχει υπολειπόμενη βαρύτητα και το κείμενο εισάγεται στην τρέχουσα θέση του σημαδιού, το σημάδι θα μετακινηθεί στα αριστερά του νεοεισαγμένου κειμένου. Εάν η left_gravity παραληφθεί, προεπιλέγεται το False . </item>
|
|
Packit |
1470ea |
<item>Για να ορίσετε ότι κάποιο κείμενο στην ενδιάμεση μνήμη πρέπει να έχει ειδική μορφοποίηση, πρέπει να ορίσετε μια ετικέτα να κρατήσει αυτήν την πληροφορία μορφοποίησης και έπειτα να εφαρμόσει αυτήν την ετικέτα στην περιοχή του κειμένου χρησιμοποιώντας create_tag("tag name", property) και apply_tag(tag, start_iter, end_iter) όπως στο, για παράδειγμα:
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
tag = textbuffer.create_tag("orange_bg", background="orange")
|
|
Packit |
1470ea |
textbuffer.apply_tag(tag, start_iter, end_iter)
|
|
Packit |
1470ea |
Τα ακόλουθα είναι μερικές από τις κοινές εφαρμοζόμενες τεχνοτροπίες στο κείμενο:
|
|
Packit |
1470ea |
<list>
|
|
Packit |
1470ea |
<item>Χρώμα παρασκηνίου (ιδιότητα "background") </item>
|
|
Packit |
1470ea |
<item>Χρώμα προσκηνίου (ιδιότητα "foreground") </item>
|
|
Packit |
1470ea |
<item>Υπογράμμιση (ιδιότητα "underline") </item>
|
|
Packit |
1470ea |
<item>Έντονα (ιδιότητα "weight") </item>
|
|
Packit |
1470ea |
<item>Πλάγια (ιδιότητα "style") </item>
|
|
Packit |
1470ea |
<item>Διαγράμμιση (ιδιότητα "strikethrough") </item>
|
|
Packit |
1470ea |
<item>Στοίχιση (ιδιότητα "justification") </item>
|
|
Packit |
1470ea |
<item>Μέγεθος (ιδιότητες "size" και "size-points") </item>
|
|
Packit |
1470ea |
<item>Αναδίπλωση κειμένου (ιδιότητα "wrap-mode") </item>
|
|
Packit |
1470ea |
</list>
|
|
Packit |
1470ea |
Μπορείτε επίσης να διαγράψετε συγκεκριμένες ετικέτες αργότερα χρησιμοποιώντας remove_tag() ή να διαγράψετε όλες τις ετικέτες σε μια δεδομένη περιοχή καλώντας remove_all_tags() . </item>
|
|
Packit |
1470ea |
</list>
|
|
Packit |
1470ea |
Μέθοδοι για γραφικό στοιχείο TextIter
|
|
Packit |
1470ea |
<list>
|
|
Packit |
1470ea |
<item>Η forward_search(needle, flags, limit) αναζητά μπροστά για needle . Η αναζήτηση δεν θα συνεχίσει πέρα από το όριο Gtk.TextIter . Οι flags μπορούν να οριστούν σε ένα από τα ακόλουθα, ή οποιονδήποτε συνδυασμό του συνενώνοντας τους με τον τελεστή OR | : 0 (η συμφωνία πρέπει να είναι ακριβής)· Gtk.TextSearchFlags.VISIBLE_ONLY (η συμφωνία μπορεί να έχει αόρατο κείμενο διανθισμένο σε βελόνα)· Gtk.TextSearchFlags.TEXT_ONLY (η συμφωνία μπορεί να έχει γραφικά στοιχεία pixbufs ή θυγατρικά ανακατεμένα μέσα στην περιοχή συμφωνίας)· το Gtk.TextSearchFlags.CASE_INSENSITIVE (το κείμενο θα ταιριάζει ανεξάρτητα από κεφαλαία/μικρά). Η μέθοδος επιστρέφει μια πλειάδα που περιέχει ένα Gtk.TextIter που δείχνει στην αρχή και στον πρώτο χαρακτήρα μετά τη συμφωνία· εάν δεν βρεθεί συμφωνία, ο None επιστρέφεται. </item>
|
|
Packit |
1470ea |
<item>Η backward_search(needle, flags, limit) κάνει το ίδιο όπως η forward_search() , αλλά κινείται προς τα πίσω. </item>
|
|
Packit |
1470ea |
</list>
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
|
|
Packit |
1470ea |
<section id="references">
|
|
Packit |
1470ea |
<title>Αναφορές API</title>
|
|
Packit |
1470ea |
Σε αυτό το παράδειγμα χρησιμοποιήσαμε τα παρακάτω:
|
|
Packit |
1470ea |
<list>
|
|
Packit |
1470ea |
<item><link href="http://developer.gnome.org/gtk3/unstable/GtkTextView.html">GtkTextView</link> </item>
|
|
Packit |
1470ea |
<item><link href="http://developer.gnome.org/gtk3/unstable/GtkTextBuffer.html">GtkTextBuffer</link> </item>
|
|
Packit |
1470ea |
<item><link href="http://developer.gnome.org/gtk3/unstable/GtkTextTag.html">GtkTextTag</link> </item>
|
|
Packit |
1470ea |
<item><link href="http://developer.gnome.org/gtk3/unstable/GtkScrolledWindow.html">GtkScrolledWindow</link> </item>
|
|
Packit |
1470ea |
<item><link href="http://developer.gnome.org/gtk3/unstable/gtk3-Standard-Enumerations.html">Standard Enumerations</link> </item>
|
|
Packit |
1470ea |
</list>
|
|
Packit |
1470ea |
</section>
|
|
Packit |
1470ea |
</page>
|