Seite 1 von 1

Fremdwörter/Buchstaben

Verfasst: Samstag 16. April 2005, 18:07
von marco_
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?

Verfasst: Sonntag 17. April 2005, 07:43
von Leonidas
Ein passender Zeichensatz wäre UTF-8.. dazu Unicode Strings und die Buchstaben kann man dann mit u"\uZZZZ" escapen... so etwa wie hier.

Verfasst: Sonntag 17. April 2005, 08:52
von marco_
Kannst du mir schnell erklären ,wie das Beispiel funktioniert? Hab ales versucht/umgeschrieben. Funktioniert aber trotzdem nicht :oops:

Verfasst: Sonntag 17. April 2005, 23:51
von BlackJack
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.

Verfasst: Montag 18. April 2005, 12:31
von Leonidas
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.

Verfasst: Montag 18. April 2005, 18:04
von marco_
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.

Verfasst: Montag 18. April 2005, 18:24
von Leonidas
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:

Verfasst: Mittwoch 20. April 2005, 15:12
von marco_
wie kann ich den unter gtk/gnome, die Schriftart für das gesammte Programm umstellen??

Verfasst: Mittwoch 20. April 2005, 15:42
von Leonidas
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.