Нужен совет по подменю - PullRequest
0 голосов
/ 17 июня 2019

Так что в настоящее время мне приходится создавать несколько строк меню с множеством опций при нажатии.Но у меня уже есть часть меню, я заблудился о том, что хочу иметь 2 изображения.Например, если я нажму «Просмотр», появится выпадающее меню «Исходное изображение» и «Масштабированное изображение», а если щелкнуть любое из них, отобразятся соответствующие изображения с правильными изображениями.

import cv2
import numpy as np
img = cv2.imread('image.jpg')

scaled_img = cv2.resize(img, (400, 500))
cv2.imshow('Original image', img)

Из моего оригинального кода;и я не уверен, где вставить выше коды (если правильно), чтобы ниже.

def showImg(self):
    load = Image.open('image.jpg')
    render = ImageTk.PhotoImage(load)       
    img = Label(self, image=render)
    img.image = render
    img.place(x=0,y=0)

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Вы можете использовать модуль Pillow для изменения размера изображения вместо OpenCV. Ниже приведен пример:

from tkinter import *
from PIL import Image, ImageTk

class Window(Tk):
    def __init__(self):
        Tk.__init__(self)
        self.geometry('500x600')

        # initialize the images
        img = Image.open('image.jpg')
        self.original_img = ImageTk.PhotoImage(image=img)
        img = img.resize((400, 500))
        self.scaled_img = ImageTk.PhotoImage(image=img)

        # create the menu bar
        menubar = Menu(self)
        self.config(menu=menubar)

        file = Menu(menubar, tearoff=0)
        file.add_command(label='New')
        file.add_command(label='Open')
        file.add_command(label='Save')
        file.add_command(label='Save As')
        file.add_separator()
        file.add_command(label='Exit', command=self.client_exit)
        menubar.add_cascade(label='File', menu=file)

        view = Menu(menubar, tearoff=0)
        view.add_command(label='Original Image', command=lambda:self.showImg(self.original_img))
        view.add_command(label='Scaled Image', command=lambda:self.showImg(self.scaled_img))
        menubar.add_cascade(label='View', menu=view)

        # create a label to show the image
        self.imgbox = Label(self)
        self.imgbox.place(x=0, y=0)

    def showImg(self, img):
        self.imgbox.config(image=img)

    def client_exit(self):
        self.destroy()

Window().mainloop()
0 голосов
/ 17 июня 2019
from tkinter import *
import tkinter as tk
from PIL import Image, ImageTk


class Window(Frame):

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.master = master
        self.init_window()

    # Creation of init_window
    def init_window(self):
        img = Image.open("001.png")
        img = img.resize((250, 250))  ## The (250, 250) is (height, width)
        photo = ImageTk.PhotoImage(img)
        quitBtn2 = Label(root, image=photo)
        quitBtn2.image = photo
        quitBtn2.pack()

Модуль изображения

Модуль Image предоставляет класс с тем же именем, который используется для представления изображения PIL.Модуль также предоставляет ряд заводских функций, включая функции загрузки изображений из файлов и создания новых изображений.

https://pillow.readthedocs.io/en/stable/reference/Image.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...