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.
Antworten
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

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?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

Kannst du mir schnell erklären ,wie das Beispiel funktioniert? Hab ales versucht/umgeschrieben. Funktioniert aber trotzdem nicht :oops:
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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
marco_
User
Beiträge: 78
Registriert: Freitag 25. März 2005, 12:24

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

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 (former) Modvoice
Antworten