wxpython中更改变量后显示图片不改变

#wxpython#
定义了宏变量folderpath(图片文件所在文件夹),通过bitmap显示图片。
设置了文件夹,将open键与open函数绑定,执行open函数改变folderpath的值,重新执行initUI函数。print(folderpath)发现它的值改变了显示的图片未改变。
部分源码如下:

# moving.py

import wx
from PIL import Image
import cv2
import xml.dom.minidom
import xml.etree.ElementTree as ET
import os
from tkinter import messagebox


import imtools
import folder_open
folderpath = 'D:/YiShuang/work/Python_codes/OCR'
flag = 0 # 显示图片的顺序


class OCR(wx.Frame):

    def __init__(self, parent, title):
        wx.Frame.__init__(self,parent,pos=wx.DefaultPosition,style=wx.DEFAULT_FRAME_STYLE^(wx.MAXIMIZE_BOX),size=(1200,800))

        self.Center()
        self.InitUI()


    def InitUI(self):
        print(folderpath)
        panel = wx.Panel(self)
        self.bmps = []
        alllabel = []
        i = 0

        #菜单栏
        menubar = wx.MenuBar()
        filemenu1 = wx.Menu()
        filemenu2 = wx.Menu()
        menu1 = filemenu1.Append(-1,'open')
        menu2 = filemenu1.Append(-1,'save')
        menu3 = filemenu2.Append(-1,'last')
        menu4 = filemenu2.Append(-1,'next')
        menu5 = filemenu2.Append(-1,'delete label')
        menu6 = filemenu2.Append(-1,'revise')
        menu7 = filemenu2.Append(-1,'comfirm')
        self.Bind(wx.EVT_MENU,self.open,menu1)
        self.Bind(wx.EVT_MENU,self.save,menu2)
        self.Bind(wx.EVT_MENU,self.last,menu3)
        self.Bind(wx.EVT_MENU,self.next,menu4)
        self.Bind(wx.EVT_MENU,self.delete_label,menu5)
        self.Bind(wx.EVT_MENU,self.revise,menu6)
        self.Bind(wx.EVT_MENU,self.comfirm,menu7)
        menubar.Append(filemenu1,'file')
        menubar.Append(filemenu2,'edit')
        self.SetMenuBar(menubar)

        #放大图片区
        self.enlarge_images = wx.StaticBitmap(panel,pos=(0,0),size=(1200,100))
        self.enlarge_images.SetBackgroundColour("white")
        self.text_annotation = wx.StaticText(panel,label='文本标识',pos=(300,505),size=(600,20),style=wx.ALIGN_CENTER_HORIZONTAL)
        self.text_annotation.SetBackgroundColour("white")

        #图片文件列表
        list1 = imtools.get_imlist(folderpath)
        list2 = []
        for i in list1:
            self.bmps.append(wx.Bitmap(i,wx.BITMAP_TYPE_ANY))
            list2.append(os.path.split(i)[1])
        self.images_list = wx.ListBox(panel,-1,pos=(0,105),size=(295,625),choices=list2,style=wx.LB_SINGLE)
        # self.bmps
        
        #显示图片区域
        self.images = wx.StaticBitmap(panel,bitmap=self.bmps[flag],pos=(300,105),size=(600,400))
        self.images.SetBackgroundColour("white")

        #显示图片标注
        isXml = isxml(folderpath)
        if isXml:
            alllabel = showXml(folderpath)

        # 显示标注内容
        self.label_list = wx.ListBox(panel,-1,pos=(905,105),size=(295,625),choices=alllabel,style=wx.LB_SINGLE)

        #输入文本标识
        self.annotation = wx.TextCtrl(panel,pos=(300,530),size=(600,200),style=wx.TE_PROCESS_ENTER)#无此style则enter事件绑定无效
        self.Bind(wx.EVT_TEXT_ENTER,self.mark_completion,self.annotation)

    def open(self,event):
        global flag 
        global folderpath
        flag = 0 # 每次打开时显示该文件夹第一张图片
        folderpath = folder_open.folder()
        # # 重新显示图片
        # list1 = imtools.get_imlist(folderpath)
        # list2 = []
        # # print(list2)
        # for i in list1:
        #     list2.append(os.path.split(i)[1])
        # image = cv2.imread(list2[flag])
        # image_new = resizeBitmap(image)
        # height, width = image_new.shape[:2]
        # image2 = wx.Bitmap.FromBuffer(width,height,BGR_to_RGB(image_new))
        # self.images = wx.StaticBitmap(self,-1,bitmap=image2,pos=(300,105),size=(600,400))
        # # 重新显示文件列表
        # self.images_list = wx.ListBox(self,-1,pos=(0,105),size=(295,625),choices=list2,style=wx.LB_SINGLE)
        self.InitUI()
   

def  main():

    app = wx.App()
    ex = OCR(None, title='labelTool')
    ex.Show()
    app.MainLoop()


if __name__ == '__main__':
    main()

好难好难,想不懂,

你的open里flag的值不是没有改变吗?每次读到的image都一样。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^