ich habe mir schon diverse Beiträge zum Thema angesehen, jedoch immer noch nicht verstanden, wo mein Problem liegt.
Ich möchte einen Dialog für eine Bildauswahl zur Verfügung stellen. Das ausgewählte Bild soll auf eine bestimmte Größe angepasst und in einem Frame dargestellt werden.
Ich bekomme jedoch das Bild nicht angezeigt?! Es wird immer nur der graue Hintergrund darstellt.
Hinweis: Den Auswahldialog habe ich mal weggelassen und nur versucht, den Code auf die Bildumwandlung und -darstellung zu reduzieren.
Könnt Ihr mal bitte den Fehler erklären und auf ein Lösungsbeispiel anpassen.
Danke.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
### Import der erforderlichen Module ###
try:
# Tkinter for Python 2.xx
import Tkinter as tk
except ImportError:
# Tkinter for Python 3.xx
import tkinter as tk
from functools import partial
import tkinter.font as tkf
from PIL import ImageTk, Image
### Fensterdefinition ###
APP_TITLE = "Template"
APP_WIDTH = 600
APP_HEIGHT = 300
### Inhalt Canvas-Applikation ###
class App_Canvas():
def __init__(self, canvasmaster):
self.mycanvas = canvasmaster
### Inhalt Frame-Applikation ###
class App_Frame():
def __init__(self, framemaster):
self.myframe = framemaster
self.myframe.pack()
self.obj_image = Image.open("/home/pi/python_scripts/python-GUI/Images/person1.gif")
self.obj_image = self.obj_image.resize((200, 200), Image.ANTIALIAS)
self.myimage = ImageTk.PhotoImage(self.obj_image)
self.mylabel = tk.Label(self.myframe, image=self.myimage, width=200, height=200, relief="groove")
self.mylabel.pack()
### Applikationsstart ###
def main():
win_master = tk.Tk()
win_master.title(APP_TITLE)
app_canvas = tk.Canvas(win_master, width=APP_WIDTH, height=APP_HEIGHT, relief="groove", bg="white", bd=5)
# app_canvas.pack()
app_frame = tk.Frame(win_master, width=APP_WIDTH, height=APP_HEIGHT, relief="sunken", bg="gray", bd=3)
app_frame.pack()
button1 = tk.Button(win_master, text="close", command=win_master.destroy)
button1.pack()
# App_Canvas(app_canvas)
App_Frame(app_frame)
win_master.mainloop()
if __name__ == '__main__':
main()