Fremdwörter/Buchstaben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

Fremdwörter/Buchstaben

Beitragvon marco_ » Samstag 16. April 2005, 18:07

Wie kann ich Fremdwörter in mein Programm einbauen? Ich denke vor allem daran Wörter/Buchtstaben zu verwenden die nicht in unserem Zeichensatz vorkommen (z.B.:Griechisch). Wie kann ich jetzt Griechische Wörter mit deutschen koppeln. Kennt jemand den richtigen Zeichensatz dazu oder wie würdet ihr das machen?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 17. April 2005, 07:43

Ein passender Zeichensatz wäre UTF-8.. dazu Unicode Strings und die Buchstaben kann man dann mit u"\uZZZZ" escapen... so etwa wie hier.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

Beitragvon marco_ » Sonntag 17. April 2005, 08:52

Kannst du mir schnell erklären ,wie das Beispiel funktioniert? Hab ales versucht/umgeschrieben. Funktioniert aber trotzdem nicht :oops:
BlackJack

Beitragvon BlackJack » Sonntag 17. April 2005, 23:51

Das Beispiel ist nicht dazu geeignet in Deinem Programm verwendet zu werden, es zeigt nur, wie man mit u'\uXXXX' ein Unicode-Zeichen als Codepoint eingeben kann. Das sollte für Dich aber egal sein, weil Du die Daten ja nicht als Python-Zeichenketten in den Quelltext eingibst sondern in Dateien speicherst und aus ihnen wieder einliest.

Du solltest Dich vorher erstmal generell mit Unicode beschäftigen. Und Dir klarmachen wie die `encode()` und `decode()` Methoden auf (Unicode)Zeichenketten in Python wirken.

Und dann brauchst Du eine GUI, die mit Unicode klarkommt, damit Du bzw. der Benutzer Deines Programms die Daten auch sehen und eingeben kann. Tkinter kennt Unicode zum Beispiel.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 18. April 2005, 12:31

BlackJack hat geschrieben:Du solltest Dich vorher erstmal generell mit Unicode beschäftigen. Und Dir klarmachen wie die `encode()` und `decode()` Methoden auf (Unicode)Zeichenketten in Python wirken.

Dazu auch die Unicode FAQ.

BlackJack hat geschrieben:Und dann brauchst Du eine GUI, die mit Unicode klarkommt, damit Du bzw. der Benutzer Deines Programms die Daten auch sehen und eingeben kann. Tkinter kennt Unicode zum Beispiel.

PyGTK kann das auch.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

Beitragvon marco_ » Montag 18. April 2005, 18:04

Hab mir die FAQ durchgelesen, also wenn ich das jetzt richtig verstanden habe, behinaltet der Unicode für jedes Zeichen der Welt einen ByteCode? Alles schön und gut aber näher auf die Wiedergabe in Python wurde nicht eingegangen.

Nehmen wir mal an ich will den String u'\u1FF6' in einer GUI wiedergeben (Sollte eigentilch ein Omega mit einer Welle darüber sein.
Hab ein kleines PYthon-Script geschrieben um das zu testen, basiert auf dem Quiz-Script von Leonidas Es will aber nicht wirklich das Zeichen anzeigen das ich will:

Code: Alles auswählen

import gtk
import gtk.glade



def texts():
     """Set the labels"""
     next.set_label("Save")
     ok.set_label("ok")
     label.set_label("Go!")



def button_clicked(widget):
     """The event handler for the two buttons"""
     answer = widget.get_name()
     lala = eingabe.get_text()
     label.set_label(str(lala.encode("utf-16le")))
     
#--------------------------------------------------------------------
def delete_event(widget, event):
     """The program is finishing"""
     gtk.main_quit()
     return False
#--------------------------------------------------------------------
         
ui = gtk.glade.XML("quiz.glade")
label = ui.get_widget("question")
eingabe = ui.get_widget("answer")
ok = ui.get_widget("ok")
next = ui.get_widget("next")
main_win = ui.get_widget("vokabel")


signals = {"on_quizwin_delete_event": delete_event,
"on_ok_clicked": button_clicked, "on_next_clicked": button_clicked}
ui.signal_autoconnect(signals)
#--------------------------------------------------------------------
if __name__ == '__main__':
     texts()
     gtk.main()

quiz.glade:

Code: Alles auswählen

<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">

<glade-interface>

<widget class="GtkWindow" id="vokabel">
  <property name="visible">True</property>
  <property name="title" translatable="yes">Vokabel</property>
  <property name="type">GTK_WINDOW_TOPLEVEL</property>
  <property name="window_position">GTK_WIN_POS_NONE</property>
  <property name="modal">False</property>
  <property name="resizable">False</property>
  <property name="destroy_with_parent">False</property>
  <property name="decorated">True</property>
  <property name="skip_taskbar_hint">False</property>
  <property name="skip_pager_hint">False</property>
  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
  <signal name="delete_event" handler="on_quizwin_delete_event" last_modification_time="Wed, 15 Dec 2004 14:51:11 GMT"/>

  <child>
    <widget class="GtkVBox" id="vbox1">
      <property name="visible">True</property>
      <property name="homogeneous">False</property>
      <property name="spacing">0</property>

      <child>
   <widget class="GtkLabel" id="question">
     <property name="visible">True</property>
     <property name="label" translatable="yes"></property>
     <property name="use_underline">False</property>
     <property name="use_markup">False</property>
     <property name="justify">GTK_JUSTIFY_LEFT</property>
     <property name="wrap">False</property>
     <property name="selectable">False</property>
     <property name="xalign">0.5</property>
     <property name="yalign">0.5</property>
     <property name="xpad">0</property>
     <property name="ypad">0</property>
   </widget>
   <packing>
     <property name="padding">0</property>
     <property name="expand">False</property>
     <property name="fill">False</property>
   </packing>
      </child>

      <child>
   <widget class="GtkHBox" id="hbox1">
     <property name="visible">True</property>
     <property name="homogeneous">False</property>
     <property name="spacing">0</property>

     <child>
       <widget class="GtkButton" id="next">
         <property name="visible">True</property>
         <property name="can_focus">True</property>
         <property name="label" translatable="yes">Ugu</property>
         <property name="use_underline">True</property>
         <property name="relief">GTK_RELIEF_NORMAL</property>
         <property name="focus_on_click">True</property>
         <signal name="clicked" handler="on_next_clicked" last_modification_time="Sun, 17 Apr 2005 07:11:44 GMT"/>
       </widget>
       <packing>
         <property name="padding">3</property>
         <property name="expand">False</property>
         <property name="fill">False</property>
       </packing>
     </child>

     <child>
       <widget class="GtkEntry" id="answer">
         <property name="visible">True</property>
         <property name="can_focus">True</property>
         <property name="editable">True</property>
         <property name="visibility">True</property>
         <property name="max_length">0</property>
         <property name="text" translatable="yes"></property>
         <property name="has_frame">True</property>
         <property name="invisible_char" translatable="yes">*</property>
         <property name="activates_default">False</property>
       </widget>
       <packing>
         <property name="padding">8</property>
         <property name="expand">False</property>
         <property name="fill">False</property>
       </packing>
     </child>

     <child>
       <widget class="GtkButton" id="ok">
         <property name="visible">True</property>
         <property name="can_focus">True</property>
         <property name="label" translatable="yes">Aga</property>
         <property name="use_underline">True</property>
         <property name="relief">GTK_RELIEF_NORMAL</property>
         <property name="focus_on_click">True</property>
         <signal name="clicked" handler="on_ok_clicked" last_modification_time="Sun, 17 Apr 2005 07:11:37 GMT"/>
       </widget>
       <packing>
         <property name="padding">2</property>
         <property name="expand">False</property>
         <property name="fill">False</property>
       </packing>
     </child>
   </widget>
   <packing>
     <property name="padding">0</property>
     <property name="expand">True</property>
     <property name="fill">True</property>
   </packing>
      </child>
    </widget>
  </child>
</widget>

</glade-interface>

Das ganze ist nur schnell umgeändert worden und ist deshalb nicht gerade perfekt aufgebaut.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 18. April 2005, 18:24

Ist doch kein Problem:

Code: Alles auswählen

import gtk
w = gtk.Window()
l = gtk.Label(u'\u1FF6')
w.add(l)
w.show_all()
gtk.main()

Ich habe aber keine Schriftart die dieses Omaga darstellen kann.. :idea:
My god, it's full of CARs! | Leonidasvoice vs Modvoice
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

Beitragvon marco_ » Mittwoch 20. April 2005, 15:12

wie kann ich den unter gtk/gnome, die Schriftart für das gesammte Programm umstellen??
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 20. April 2005, 15:42

marco_ hat geschrieben:wie kann ich den unter gtk/gnome, die Schriftart für das gesammte Programm umstellen??

Ich denke, das Thema sollte ich splitten und einen Teil ins GTK+ Forum verschieben. Denn das hat schon lange nichts mehr mit allgemeine Fragen zu tun.

Schriftarten ändern geht folgendermaßen:

Code: Alles auswählen

import gtk, pango
w = gtk.Window()
w.connect('delete-event', lambda x, y: gtk.main_quit())
label = gtk.Label("MyLabel")
label.modify_font(pango.FontDescription("Times New Roman 20"))
w.add(label)
w.show_all()

gtk.main()

Ich vermute, dass du das für jedes Widget machen musst, oder du arbeitest mit Styles, wie in der gtkrc.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder