ich bin neu und habe kein Plan aber immerhin habe ich es geschafft mit Hilfe von Chat GPT ein Python Script mit einem Kivy GUI zu machen. Der Zweck des Scripts ist ganz einfach, es soll bei einer html Datei Text einfügen oder überschreiben. Ausser der width and height und einem Link sind es immer die gleichen Änderungen.
Das Script, dass ich hinbekommen habe funktioniert mit einer Pfadeingabe und sieht so aus:
Code: Alles auswählen
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.core.window import Window
import re
def modify_html_file(file_path, width_value, height_value, url_value):
# Neuer Script-Tag
new_script_tag = '<script src="https://s0.2mdn.net/ads/studio/cached_libs/createjs_2019.11.15_min.js"></script>\n'
# Neuer Meta-Tag
new_meta_tag = f'<meta name="ad.size" content="width={width_value},height={height_value}">\n'
# Neuer Script-Inhalt
new_script_content = f'<script type="text/javascript"> var clickTag = "{url_value}";</script>'
# Neuer Anchor-Tag
new_anchor_tag = '<a href="javascript:window.open(window.clickTag)">\n'
# Dateipfad für die modifizierte Datei
new_file_path = file_path.replace('.html', '_modified.html')
with open(file_path, 'r') as file:
lines = file.readlines()
# Ersetzen des Script-Tags
lines[15] = new_script_tag
# Finden der Position zum Einfügen des Meta-Tags
meta_index = 0
for i, line in enumerate(lines):
if line.strip().startswith('<meta'):
meta_index = i
break
# Einfügen des Meta-Tags im Head-Bereich
lines.insert(meta_index, new_meta_tag)
# Finden der Position zum Einfügen des Script-Tags
script_index = 0
for i, line in enumerate(lines):
if line.strip().startswith('</head>'):
script_index = i
break
# Einfügen des Script-Tags im Head-Bereich
lines.insert(script_index, new_script_content)
# Finden der Position des Öffnungs- und Schließungs-Tags des Body-Bereichs
body_open_index = 0
body_close_index = 0
for i, line in enumerate(lines):
if line.strip() == '<body onload="init();" style="margin:0px;">':
body_open_index = i
if line.strip() == '</body>':
body_close_index = i
# Einfügen des Anchor-Tags nach dem Öffnungs-Tag des Body-Bereichs
lines.insert(body_open_index + 1, new_anchor_tag)
# Finden der Position der schließenden </div>-Tags
div_close_index = 0
for i, line in enumerate(lines):
if line.strip() == '</div>' and lines[i + 1].strip() == '</div>':
div_close_index = i + 1
# Einfügen des schließenden </a>-Tags nach den schließenden </div>-Tags
lines.insert(div_close_index + 1, '</a>\n')
# Schreiben des modifizierten Inhalts in eine neue Datei
with open(new_file_path, 'w') as file:
file.writelines(lines)
print(f"Die modifizierte Version wurde unter '{new_file_path}' gespeichert.")
class HTMLModifierApp(App):
def build(self):
layout = BoxLayout(orientation='vertical', spacing=10, padding=10)
self.file_label = Label(text="HTML-Dateipfad:")
self.file_input = TextInput(multiline=False)
self.width_label = Label(text="Breite:")
self.width_input = TextInput(multiline=False)
self.height_label = Label(text="Höhe:")
self.height_input = TextInput(multiline=False)
self.url_label = Label(text="URL:")
self.url_input = TextInput(multiline=False)
self.modify_button = Button(text="HTML-Datei modifizieren", on_press=self.modify_html)
layout.add_widget(self.file_label)
layout.add_widget(self.file_input)
layout.add_widget(self.width_label)
layout.add_widget(self.width_input)
layout.add_widget(self.height_label)
layout.add_widget(self.height_input)
layout.add_widget(self.url_label)
layout.add_widget(self.url_input)
layout.add_widget(self.modify_button)
return layout
def modify_html(self, instance):
html_file_path = self.file_input.text
width_value = self.width_input.text
height_value = self.height_input.text
url_value = self.url_input.text
modify_html_file(html_file_path, width_value, height_value, url_value)
if __name__ == '__main__':
HTMLModifierApp().run()
Um mein Leben noch einfacher zu machen wäre es super eine Drag and Drop Funktion zu haben anstelle der Pfadeingabe.
Auch das habe ich fast hinbekommen. Aber irgendwie funktioniert das Drop nicht. Kann mir jemand sagen, wo der Fehler liegt?
Code: Alles auswählen
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.filechooser import FileChooserListView
from kivy.core.window import Window
import re
class HTMLModifierApp(App):
def build(self):
# ... (other code)
layout = BoxLayout(orientation='vertical', spacing=10, padding=10)
self.drop_label = Label(text="Datei hierhin ziehen", size_hint_y=None, height=40)
self.width_input = TextInput(hint_text="Breite eingeben", multiline=False)
self.height_input = TextInput(hint_text="Höhe eingeben", multiline=False)
self.url_input = TextInput(hint_text="URL eingeben", multiline=False)
self.apply_button = Button(text="Anpassungen anwenden", on_press=self.modify_html)
self.result_label = Label(text="", size_hint_y=None, height=40)
self.file_chooser = FileChooserListView(path='.')
self.file_chooser.bind(selection=self.select_file)
layout.add_widget(self.drop_label)
layout.add_widget(self.width_input)
layout.add_widget(self.height_input)
layout.add_widget(self.url_input)
layout.add_widget(self.apply_button)
layout.add_widget(self.result_label)
layout.add_widget(self.file_chooser)
Window.bind(on_drop_file=self.on_drop_file) # Bind the on_drop_file event
return layout
def modify_html(self, instance):
if self.file_chooser.selection:
html_file_path = self.file_chooser.selection[0]
width_value = self.width_input.text
height_value = self.height_input.text
url_value = self.url_input.text
modify_html_file(html_file_path, width_value, height_value, url_value)
else:
self.result_label.text = "Bitte wählen Sie eine Datei aus, bevor Sie Änderungen anwenden."
def select_file(self, selection):
# This method is called when a file is selected in the FileChooser
pass
def on_drop_file(self, *args):
# This method is called when a file is dropped onto the app window
pass
if __name__ == '__main__':
HTMLModifierApp().run()
Liebe Grüsse und nicht zu streng mit mir sein. Ich gebe euch gerne Tipps bei Grafischen Fragen (-: