Transparente Bilder in Python einfügen
@M96Wayne: Das Argument gibt die Koordinaten der beiden gegenüberliegenden Ecken eines Rechtecks an (x_1, y_1, x_2, y_2), wobei `x_1` und `y_1` die linke obere Ecke beschreiben und `x_2` und `y_2` die rechte untere Ecke. Wenn also das Bild auf der Schaltfläche 128 Pixel breit und hoch ist, dann schneidet man mit (0, 0, 128, 128) aus dem Hintergrundbild ganz oben links einen Bereich aus der 128 Pixel breit und hoch ist, und da wird dann das Bild für die Schaltfläche mit `paste()` drüber gelegt. Du hast jetzt aus den 0en jeweils eine 100 gemacht, das bedeutet also `crop()` wird (100, 100, 128, 128) übergeben, also ein viel kleineres Stück ausgeschnitten, das nur noch 28 Pixel breit und hoch ist, und da kann man kein 128×128 Pixel Bild drüber legen. Wenn Du beim Ausschneiden die linke obere Ecke verschiebst, dann musst Du das mit der rechten unteren ebenfalls machen, wenn der Ausschnitt gleich gross bleiben soll.
@M96Wayne: Da die 100 an zwei verschiedenen Stellen im Programm vorkommen sollte man die übrigens besser als Konstanten definieren oder den Benutzer der Klasse als Argumente (möglicherweise mit Default-Werten) übergeben lassen. Sonst muss man wenn man diesen Wert mal ändern will, daran denken auch alle Vorkommen zu verändern, statt nur an einer zentralen Stelle den Wert einmal zu ändern.
Wie kann ich das dann ändern würde es nämlich dann so machen:
Bloß weiß ich halt nich wie man das dann definiert bzw umsetzt, aber vom Prinzip her ist es ja richtig. Man müsste nur noch x bzw k irgendwo eingeben können
Code: Alles auswählen
self.button.place(x=k, y=f, width=width, height=height)
button_image = image.crop((k, f, button_width+k,button_height+f))
@M96Wayne: Man könnte die Werte wie gesagt als Argumente übergeben lassen wenn so ein `PleaseFindABetterNameForThisClass`-Exemplar erzeugt wird. Da die in der anderen Methode benötigt werden, gehören sie zum Zustand des Objekts, müssen also als Attribute gesetzt werden. Und auf jeden Fall unter besseren Namen als `k` und `f`.
Ich weiß einfach nicht wie ich die Argumente (z.b f,k) einbringe und das dann in die Klasse "Please..." (-->_init_) mache.
Desweiteren habe ich das Problem, dass ich auch mehrere Transparente Bilder mit verschiedenen Commands miteinbringen muss, weil dieses Programm jetzt nur auf eine PNG.Datei programmiert ist.
Ich bekomm einfach nicht hin, dass ich meherer PNG Dateien miteinbringe.
Desweiteren habe ich das Problem, dass ich auch mehrere Transparente Bilder mit verschiedenen Commands miteinbringen muss, weil dieses Programm jetzt nur auf eine PNG.Datei programmiert ist.
Ich bekomm einfach nicht hin, dass ich meherer PNG Dateien miteinbringe.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Du meinst jetzt aber (hoffentlich) nicht das hier?M96Wayne hat geschrieben:Ich weiß einfach nicht wie ich die Argumente (z.b f,k) einbringe und das dann in die Klasse "Please..." (-->_init_) mache.
Code: Alles auswählen
class Foo:
def __init__(self, f, k):
self.f = f
self.k = k
obj = Foo("bar", 42)
print(obj.f)
print(obj.k)
Ohne Deinen Code zu kennen kann man nur allgemein sagen, dass Du eben entweder eine Schleife brauchst, die die einzelnen Bilder einliest und sequentiell verarbeitet, oder irgend einen Container (z.B. eine Liste), in dem Du alle Bilder vorhältst und auf diese mehrfach und in beliebiger Reihenfolge zugreifen kannst.M96Wayne hat geschrieben: Desweiteren habe ich das Problem, dass ich auch mehrere Transparente Bilder mit verschiedenen Commands miteinbringen muss, weil dieses Programm jetzt nur auf eine PNG.Datei programmiert ist.
Ich bekomm einfach nicht hin, dass ich meherer PNG Dateien miteinbringe.
Das ist aber Basiswissen und das solltest Du haben, wenn Du Dich ein wenig mit Python beschäftigt hast (Und wenn nicht, solltest Du ggf. noch einmal ein Tutorial durcharbeiten!)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert