Bild Datei bei Tkinter verwenden!!!!!!!!!!!!!

Fragen zu Tkinter.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@Nic_Kobrasi@web.de: ich hab nichts wirklich Neues, als Du in Deinem Beispiel. Dass da zwei Bilder sind, liegt daran, dass Du einmal ein Canvas und einmal ein Label erzeugt hast.
Nic_Kobrasi@web.de
User
Beiträge: 27
Registriert: Donnerstag 13. August 2015, 10:00

welches ist das, das sich dann später bewegen soll ?
Nic_Kobrasi@web.de
User
Beiträge: 27
Registriert: Donnerstag 13. August 2015, 10:00

hab den code jetzt so geschrieben jetzt ist nur noch ein mänchen drauf

Code: Alles auswählen

import tkinter as tk
import random
import time

IMAGENAME = r"C:\Users\Nicolai\Desktop\Python lernen\Stickman_stand.gif"

class Figur:
    def __init__(self, canvas, img):
        self.canvas = canvas
        self.img = img
        self.img_id = self.canvas.create_image(0, 0, image=img)
        self.canvas.move(self.img_id, 245, 100)
        self.x = -3
        self.y = -3
        self.canvas_height = self.canvas.winfo_height()
        self.canvas_width = self.canvas.winfo_width()

def main():
    root = tk.Tk()
    root.title("Stickmans' Adeventure")
    root.resizable(1, 1)
    root.wm_attributes("-topmost", 1)
    canvas = tk.Canvas(root, width=500, height=500, bd=0, highlightthickness=0)
    canvas.pack()

    img = tk.PhotoImage(file=IMAGENAME)
    figure = Figur(canvas, img)

    root.mainloop()

if __name__ == '__main__':
    main()
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

cofi hat geschrieben:Nein, wenn man mit Tkinter arbeitet will man absolut keinen Stern-Import:
Tk (Python2) importiert 182 Namen das ist absolut nicht ueberschaubar und die Namen sind generisch genug, dass sie sich mit anderen ueberschneiden koennen.
Stimmt braucht man nicht alles. Aber wenn man eine GUI schreibt, wäre es nicht schlecht, schon mal die Widgets zu importieren:

Code: Alles auswählen

from tkinter import Tk
from tkinter import Message
from tkinter import Label
from tkinter import Button
from tkinter import Radiobutton
from tkinter import Checkbutton
from tkinter import Entry
from tkinter import Spinbox
from tkinter import Scrollbar
from tkinter import Text
from tkinter import Listbox
from tkinter import Frame
from tkinter import LabelFrame
from tkinter import Scale
from tkinter import PanedWindow
from tkinter import Canvas
from tkinter import Menubutton
from tkinter import Menu
Aber man möchte vielleicht bei Pack auch LEFT, RIGHT, BOTTOM, TOP haben. Das könnte man zwar auch kleingeschrieben als String schreiben, ober ohne String direkt sieht es besser aus.
Vielleicht sollte man einmal eine Liste erstellen, was man importieren sollte.

Und wenn das Programm fertig ist, kann man bei den imports ja wieder herauslöschen, was man nicht gebraucht hat.

Ja, da wären auch die reliefs oder anchor, wofür es Definitionen gibt, auch X und Y etwa für Mauskoordinaten. Da müßte man wirklich mal nachdenken, was da sinnvoll wäre schon einmal zu importieren.

Beim GuiEditor brauche ich so ziemlich fast alles. da sollte ich wohl dann auch fast alles importieren.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@Alfons Mittelmeyer: man kann auch mehrere Namen gleichzeitig importieren. Aber wie schon geschrieben bevorzuge ich das "import tkinter as tk".
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Und das kannst du alles nicht nutzen, wenn du stattdessen `tkinter.` oder sogar nur `tk.` davor schreiben musst? Du redest hier von vielleicht 40 Namen, die du sehr wahrscheinlich gar nicht alle auf einmal brauchst, und damit nicht einmal die Haelfte der importierten Namen darstellen.

Auch schoen, dass du die Namen einzeln importierst, statt sie einfach in einem Import aufzulisten.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Sirius3 hat geschrieben:@Alfons Mittelmeyer: man kann auch mehrere Namen gleichzeitig importieren. Aber wie schon geschrieben bevorzuge ich das "import tkinter as tk".
Wenn man das bevorzugt, dann kann man das so machen. Aber warum Sternchenimporte kritisieren. Bei mehreren Sternchenimporten kann es Überschneidungen geben. Aber einen Sternchenimport finde ich praktisch.

Außerdem muss ich bei DynTkInter einen Sternchenimport machen. Denn das ist eine tkinter Erweiterung und muss daher alles anbieten, was tkinter hat. Teils bekommt der User dann was bei DynTkInter erweitert ist und alles andere über meinen Sternchenimport von tkinter.
Ene Uran
User
Beiträge: 125
Registriert: Sonntag 17. September 2006, 20:14
Wohnort: Hollywood

Tkinter kann nur .GIF Bilder zeigen. Für ein .PNG Bild musst Du PIL (pillow) mit Tkinter benützen.

Hier ein Beispiel ...

Code: Alles auswählen

''' Tk_Canvas_Image.py
display an image using Tkinter and PIL
use a canvas so you can delete the image (eg. slide show) 
PIL allows Tkinter to read more than just .gif image files

used PIL fork Pillow (newer version of PIL) from:
https://pypi.python.org/pypi/Pillow/2.0.0
'''

from PIL import ImageTk
try:
    # Python2
    import Tkinter as tk
except ImportError:
    # Python3
    import tkinter as tk

root = tk.Tk()

# pick an image file you have in your working directory
# or specify full path
image_file = "LAKE2.png"
photo = ImageTk.PhotoImage(file=image_file)
root.title(image_file)

# put the image on a canvas
cv = tk.Canvas()
cv.pack(side='top', fill='both', expand='yes')
img = cv.create_image(0, 0, image=photo, anchor='nw')
cv.update()

# optionally delete image after 5000 ms
cv.after(5000, cv.delete(img))
cv.update()

root.mainloop()
Atomkraftwerkaktienbesitzer
Antworten