So jetzt hab ich's auch Sehr schön!... . Versuche mich gerade selbst zu motivieren python-gtk zu lernen weil Tkinter langsam an seine Grenzen stößt was den "Moderen Desktop" angeht. Python ist halt super weil soviel schon im Debian-Repo drin ist. GTK musste ich ja eben erstmal über gem compilieren. Aber es ist wirklich bemerkenswert wie zugänglich das Script geschrieben ist.
EDIT: Hab GPT gesagt er soll's mal in Python-gtk transformieren. Ruby finde ich leserlicher!
Python
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
def open_file(button):
dialog = Gtk.FileChooserDialog(
title='Datei öffnen',
parent=window,
action=Gtk.FileChooserAction.OPEN,
)
dialog.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)
dialog.add_button(Gtk.STOCK_OPEN, Gtk.ResponseType.OK)
filter = Gtk.FileFilter()
filter.set_name('Textdateien')
filter.add_pattern('*.txt')
dialog.add_filter(filter)
response = dialog.run()
if response == Gtk.ResponseType.OK:
filename = dialog.get_filename()
with open(filename, 'r') as file:
text_buffer.set_text(file.read())
dialog.destroy()
def save_file(button):
dialog = Gtk.FileChooserDialog(
title='Datei speichern',
parent=window,
action=Gtk.FileChooserAction.SAVE,
)
dialog.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)
dialog.add_button(Gtk.STOCK_SAVE, Gtk.ResponseType.OK)
filter = Gtk.FileFilter()
filter.set_name('Textdateien')
filter.add_pattern('*.txt')
dialog.add_filter(filter)
response = dialog.run()
if response == Gtk.ResponseType.OK:
filename = dialog.get_filename()
text = text_buffer.get_text(text_buffer.get_start_iter(), text_buffer.get_end_iter(), False)
with open(filename, 'w') as file:
file.write(text)
dialog.destroy()
def new_file(button):
text_buffer.set_text('')
def count_words(button):
text = text_buffer.get_text(text_buffer.get_start_iter(), text_buffer.get_end_iter(), False)
words = len(text.split())
dialog = Gtk.MessageDialog(
transient_for=window,
flags=Gtk.DialogFlags.MODAL,
type=Gtk.MessageType.INFO,
buttons=Gtk.ButtonsType.OK,
text=f'Anzahl der Wörter: {words}',
)
dialog.run()
dialog.destroy()
window = Gtk.Window()
window.set_title('Texteditor')
window.set_default_size(1000, 600)
window.connect('delete-event', Gtk.main_quit)
header_bar = Gtk.HeaderBar()
header_bar.set_show_close_button(True)
header_bar.set_title('Texteditor')
new_file_button = Gtk.Button.new_with_label('Neue Datei')
new_file_button.connect('clicked', new_file)
header_bar.pack_start(new_file_button)
open_file_button = Gtk.Button.new_with_label('Datei öffnen')
open_file_button.connect('clicked', open_file)
header_bar.pack_start(open_file_button)
save_file_button = Gtk.Button.new_with_label('Datei speichern')
save_file_button.connect('clicked', save_file)
header_bar.pack_start(save_file_button)
count_words_button = Gtk.Button.new_with_label('Wörter zählen')
count_words_button.connect('clicked', count_words)
header_bar.pack_start(count_words_button)
window.set_titlebar(header_bar)
text_view = Gtk.TextView()
text_view.set_wrap_mode(Gtk.WrapMode.WORD)
text_buffer = text_view.get_buffer()
scrolled_window = Gtk.ScrolledWindow()
scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
scrolled_window.add(text_view)
box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=0)
box.pack_start(scrolled_window, expand=True, fill=True, padding=10)
window.add(box)
window.show_all()
Gtk.main()
Alles anzeigen