每当单击列表框中的项目时,都会在 Tkinter 中显示图像

问题描述 投票:0回答:1

这是我的整个代码供参考,我想知道每当我单击列表框中的一个国家到第三帧时如何显示各自的国家图片,因为我不知道该怎么做,我想学习也谢谢您,任何见解将不胜感激。

from tkinter import *
from turtle import position, right
root = Tk()

root.title("LT_DelosSantosCristianJay")
root.geometry("500x200")



#FRAMES
frame_1 = Frame(root)
frame_1.grid(row = 0, column = 0, columnspan = 2)
frame_2 = Frame(root)
frame_2.grid(row = 1, column = 0,pady=(0,20))
frame_3 = Frame(root)
frame_3.grid(row = 1, column = 1)

continents = {
    "Asia": ["Philippines", "Malaysia", "Taiwan", "Singapore", "Thailand", "India"],

    "Africa": ["Algeria", "Angola", "Egypt", "Cape Verde", "Liberia", "Kenya", "Morocco", "Nigeria"],

    "America": ["Venezuela", "Peru", "Jamaica", "United States", "Cuba", "Chile", "Argentina"],

    "Europe": ["Russia", "Germany", "United Kingdom", "Italy", "Ukraine", "France", "Belgium"]
}

# Frame One

var = StringVar()
var.set('Select')

Radiobutton(frame_1, text="Asia", font=("Times", 12, "bold"), fg="blue", variable=var, value='Asia', borderwidth=1,
            relief=SOLID, width=10, command=lambda: RadioSelected(var.get())).pack(side=LEFT)
Radiobutton(frame_1, text="Africa", font=("Times", 12, "bold"), fg="blue", variable=var, value="Africa", borderwidth=1,
            relief=SOLID, width=11, command=lambda: RadioSelected(var.get())).pack(side=LEFT)
Radiobutton(frame_1, text="America", font=("Times", 12, "bold"), fg="blue", variable=var, value="America", borderwidth=1,
            relief=SOLID, width=11, command=lambda: RadioSelected(var.get())).pack(side=LEFT)
Radiobutton(frame_1, text="Europe", font=("Times", 12, "bold"), fg="blue", variable=var, value="Europe", borderwidth=1,
            relief=SOLID, width=11, command=lambda: RadioSelected(var.get())).pack(side=LEFT)

# Frame Two

# Listbox and Scrollbar
flag_listbox = Listbox(frame_2, font=("Times",15,"bold"),width=15,height=7)
flag_listbox.pack(side=LEFT, fill=BOTH)

flag_scrollbar = Scrollbar(frame_2)
flag_scrollbar.pack(side=RIGHT, fill=BOTH)

flag_listbox.config(yscrollcommand=flag_scrollbar.set)

flag_scrollbar.config(command=flag_listbox.yview)


# Radio Button click
def RadioSelected(Value):
    flag_listbox.delete(0, END)
    list_values = continents[Value]
    for i in list_values:
        flag_listbox.insert(END, i)

#Frame Three

flagbox_Label = Label(frame_3,bg="white",width=35,height=9)
flagbox_Label.grid(sticky="we",pady=(0,20))


root.mainloop()
python image tkinter listbox
1个回答
2
投票

在 tkinter 中显示图像的最佳方法是使用 Pillow 模块:

from tkinter import *
from PIL import Image, ImageTk

#U can assign this function to the command of every button
#and pass the image path and the window or the frame as arguments.

def show_img(image_path, frame) :
    width = 500
    height = 500
    image = Image.open(image_path)
    image = image.resize((width, height), Image.LANCZOS)
    #a 500x500 image (modify width and height vars depending on your needs)
    my_img0 = ImageTk.PhotoImage(image)
    initimg = Label(frame, image = my_img0)
    initimg.image = my_img0
    initimg.pack()

安装Pillow模块使用:pip install Pillow(看起来很简单;))

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.