我想通過ImageList來制作電子相冊預覽,通過點擊ImageList中的圖片彈出相應figure來展示它們,但一直不知道怎么讓各個事件和各個圖片對應起來,
還有因為這份代碼是在別人的基礎上修改的,所以想請教一下有沒有不用data字典來給圖片做說明又能根據檔案夾中圖片的個數充分初始化ImageList,這里的代碼必須在 for x in range()里手動輸入引數來初始化
import wx
from PIL import Image
import matplotlib.pyplot as plt
import os
import tkinter
import re
import pygame
data = {0:"Zero",1:"first",2:"second",3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine",10:"ten",11:"eleven"}
#字典
#h = 0
class MyFrame(wx.Frame):
def __init__(self,parent=None):
#h = 1
super(MyFrame, self).__init__(parent, -1, "帶位圖的串列", size=(1000, 1000))#super可以呼叫父類以及父類的方法
il = wx.ImageList(150,300,True) #創建影像串列
for f in os.listdir(r'E:\\photo2'):
#h = h + 1
img = wx.Image(r"E:\photo2"+"\\"+f,wx.BITMAP_TYPE_BMP)
img.Rescale(150,300)
bmp = img.ConvertToBitmap()
il.Add(bmp)
#s = il.GetBitmap(5)
#print(s)
self.list = wx.ListCtrl(self,-1,style=wx.LC_ICON|wx.LC_AUTOARRANGE)
self.list.AssignImageList(il,wx.IMAGE_LIST_NORMAL)
#h = self.list.InsertImageItem()
#呼叫InsertImageStringItem()方法出入串列項,并為圖示設定說明字串
#self.Bind(wx.EVT_LIST_ITEM_SELECTED, plt.show,il[])
for x in range(11):
self.list.InsertImageStringItem(x,data[x],x)
#self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.courseListSelectFunc, self.list)
#self.Bind(wx.EVT_LIST_ITEM_SELECTED,plt.show , self.list)
app = wx.App()
frame = MyFrame()
frame.Show()
app.MainLoop()
#AssignImageList和InsertImageStringItem去創建位圖串列
現在程式運行的結果如下:

之前嘗試添加過事件系結不管點擊哪個圖都只能展示最后一張圖,因此請教各位大佬對應系結事件的辦法
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/132435.html
上一篇:求助大佬解決verilogHDL
