2017-10-22 29 views
-1

TkinterとPythonを学びたいと思っています。複数の画像を開いてPython 3の複数のキャンバスに保存するにはどうすればいいですか?キャンバスのサイズに合わせてイメージを合わせたいと思っています。複数の画像を開いて複数のキャンバスに保存するTkinter

誰かが簡単なコードを使用してこれを行うことができますか?

import tkinter 
from tkinter import filedialog 
import os 
#from PIL import ImageTk, Image 
from tkinter import * 
import PIL.Image 
from tkinter.filedialog import askopenfilename 
import py_compile 

mainWindow =tkinter.Tk() 

mainWindow.title("Image") 
mainWindow.geometry('640x480+800+200') 

mainWindow.columnconfigure(0, weight=3) 
mainWindow.columnconfigure(1, weight=1) 
mainWindow.columnconfigure(2, weight=1) 
mainWindow.rowconfigure(0, weight=3) 
mainWindow.rowconfigure(1, weight=3) 
mainWindow.rowconfigure(2, weight=5) 
mainWindow.rowconfigure(3, weight=3) 

leftFrame = tkinter.LabelFrame(mainWindow, text='PICTURE') 
leftFrame.grid() 

canvas = tkinter.Canvas(leftFrame, relief='sunken', borderwidth=5, bg= 'white', width=100, height=100) 
canvas.grid(row=1, column=0) 
canvas2 = tkinter.Canvas(leftFrame, relief='sunken', borderwidth=5, bg= 'white', width=100, height=100) 
canvas2.grid(row=2, column=0) 
canvas3 = tkinter.Canvas(leftFrame, relief='sunken', borderwidth=5, bg= 'white', width=100, height=100) 
canvas3.grid(row=1, column=1) 
canvas4 = tkinter.Canvas(leftFrame, relief='sunken', borderwidth=5, bg= 'white', width=100, height=100) 
canvas4.grid(row=2, column=1) 

def clicked(): 
    print('hello') 
    open_img() 

def open_img(): 
    global photo 
    filename = filedialog.askopenfilename(initialdir = "E:/Images", filetypes =()) 
    photo = tkinter.PhotoImage(file=filename) 
    photo = photo.subsample(3,3) 
    canvas.create_image(0,0, anchor=CENTER, image=photo) 

rightFrame = tkinter.LabelFrame(mainWindow, text='MENU') 
rightFrame.grid() 

button1 = tkinter.Button(rightFrame , text="Open", command=clicked) 
button1.grid(row=1, column=2) 

mainWindow.mainloop() 

答えて

0

あなたは、そのクラスのインスタンスを作成し、各画像を1つのクラスを使用しますが、あなたはクラスを使用していないので、おそらくクラス構造に精通していないしておりますので、以下のコードは、1つのクラスにすべてを兼ね備えています。私は画像を持っていないので、「開く」ボタンがクリックされるたびに、画像の代わりに関連する「閉じる」ボタンを備えた新しいToplevelを開きます。

try: 
    import Tkinter as tk  ## Python 2.x 
except ImportError: 
    import tkinter as tk  ## Python 3.x 

from functools import partial 

class OpenToplevels(): 
    """ open and close additional Toplevels with a button 
    """ 
    def __init__(self): 
     self.root = tk.Tk() 
     self.button_ctr=0 
     but=tk.Button(self.root, text="Open a Toplevel", 
         command=self.open_another) 
     but.grid(row=0, column=0) 
     tk.Button(self.root, text="Exit Tkinter", bg="red", 
        command=self.root.quit).grid(row=1, column=0, sticky="we") 
     self.root.mainloop() 

    def close_it(self, id): 
     id.destroy() 

    def open_another(self): 
     self.button_ctr += 1 
     id = tk.Toplevel(self.root) 
     id.title("Toplevel #%d" % (self.button_ctr)) 
     tk.Button(id, text="Close Toplevel #%d" % (self.button_ctr), 
        command=partial(self.close_it, id), 
        bg="orange", width=20).grid(row=1, column=0) 

Ot=OpenToplevels() 
関連する問題