LoveEmiliaForever 2021-05-22 19:22 采纳率: 0%
浏览 98

Python3.7 wxpython模块GUI开发 panel切换出现显示问题

我在做一个简单的加密小程序,我为它设计了一个可视界面。但是在具体的一些操作上出现了问题,下面是代码:

#这是点击按钮的事件,这个按钮放在一个叫panel的画布里面        
self.bt_encrypt=wx.Button(self.panel,label=u"加 密",size=(150,40))
self.Bind(wx.EVT_BUTTON,self.Onclick_encrypt,self.bt_encrypt)


#这是Onclick_encrypt函数

def Onclick_encrypt(self,e):
    self.panel.Destroy()
    self.encrypt_picture_panel(e)#这是另一个函数


#encrypt_picture_panel函数的样子

    def encrypt_picture_panel(self,e):
        title_font=wx.Font(32,wx.DEFAULT,wx.FONTSTYLE_NORMAL,wx.NORMAL)
        button_font=wx.Font(16,wx.DEFAULT,wx.FONTSTYLE_NORMAL,wx.NORMAL) 
        label_font=wx.Font(13,wx.DEFAULT,wx.FONTSTYLE_NORMAL,wx.NORMAL)
        self.encrypt_panel_picture=wx.Panel(self)
        self.encrypt_panel_picture.SetBackgroundColour('white')
        self.title_encrypt=wx.StaticText(self.encrypt_panel_picture,-1,label=u"加   密")
        self.title_encrypt.SetFont(title_font)
        self.bt_select=wx.Button(self.encrypt_panel_picture,label=u"密钥以图片保存",size=(160,30))
        self.bt_select.SetFont(button_font)
        self.bt_browse=wx.Button(self.encrypt_panel_picture,label=u"浏览...",size=(100,30))
        self.bt_browse.SetFont(button_font)
        self.bt_back=wx.Button(self.encrypt_panel_picture,label=u"返  回",size=(100,30))
        self.bt_back.SetFont(button_font)
        self.bt_start=wx.Button(self.encrypt_panel_picture,label=u"开  始",size=(100,30))
        self.bt_start.SetFont(button_font)
        self.label_select=wx.StaticText(self.encrypt_panel_picture,label=u"密钥保存形式:",size=(120,30))
        self.label_select.SetFont(label_font)
        self.label_state=wx.StaticText(self.encrypt_panel_picture,label=u"密钥以图片保存",size=(0,0))
        self.label_state.SetFont(label_font)
        self.label_filepath=wx.StaticText(self.encrypt_panel_picture,label=u"需加密文件路径:",size=(130,30))
        self.label_filepath.SetFont(label_font)
        self.text_filepath=wx.TextCtrl(self.encrypt_panel_picture,size=(300,30))
        self.text_filepath.SetFont(button_font)
        #界面布局
        hsizer_select=wx.BoxSizer(wx.HORIZONTAL)
        hsizer_select.Add(self.label_select,flag=wx.LEFT|wx.RIGHT,border=5)
        hsizer_select.Add(self.bt_select,flag=wx.LEFT,border=5)
        hsizer_select.Add(self.label_state,flag=wx.LEFT,border=5)
        hsizer_filepath=wx.BoxSizer(wx.HORIZONTAL)
        hsizer_filepath.Add(self.label_filepath,flag=wx.LEFT|wx.RIGHT,border=5)
        hsizer_filepath.Add(self.text_filepath,flag=wx.LEFT|wx.RIGHT,border=5)
        hsizer_filepath.Add(self.bt_browse,flag=wx.LEFT|wx.RIGHT,border=5)
        hsizer_bottom=wx.BoxSizer(wx.HORIZONTAL)
        hsizer_bottom.Add(self.bt_back,flag=wx.LEFT|wx.RIGHT,border=5)
        hsizer_bottom.Add(self.bt_start,flag=wx.LEFT|wx.RIGHT,border=5)
        vsizer_encrypt_picture=wx.BoxSizer(wx.VERTICAL)
        vsizer_encrypt_picture.Add(self.title_encrypt,flag=wx.CENTER|wx.TOP,border=10)
        vsizer_encrypt_picture.Add(hsizer_select,flag=wx.TOP|wx.ALIGN_LEFT,border=20)
        vsizer_encrypt_picture.Add(hsizer_filepath,flag=wx.ALIGN_LEFT|wx.TOP,border=20)
        vsizer_encrypt_picture.Add(hsizer_bottom,flag=wx.ALIGN_RIGHT|wx.TOP,border=20)
        self.encrypt_panel_picture.SetSizer(vsizer_encrypt_picture)

在我点了panel画布的“加密”按钮后,panel画布被销毁,encrypt_panel_picture画布被建立起来。问题就出现在这个过程,在销毁一个画布重设另一个画布后,窗口会显示不正常,而当我调整窗口大小(必须手动调整)之后又会正常显示

初始界面:

点击了加密按钮后:

调整大小中:

大小调整完毕后:

这是什么问题?该要怎么解决?

  • 写回答

1条回答 默认 最新

  • LoveEmiliaForever 2021-05-22 19:36
    关注

    好了,我找到解决方法了,哈哈

    评论

报告相同问题?

悬赏问题

  • ¥15 WPS访问权限不足怎么解决
  • ¥15 java幂等控制问题
  • ¥15 海湾GST-DJ-N500
  • ¥15 氧化掩蔽层与注入条件关系
  • ¥15 Django DRF 如何反序列化得到Python对象类型数据
  • ¥15 多数据源与Hystrix的冲突
  • ¥15 如何在线硕士了解,广告太多,希望有真实接触过的人回答下?(标签-学习|关键词-在线硕士)
  • ¥15 zabbix6.4与frp如何进行联动
  • ¥15 如何使用Echarts制作途中时间序列表
  • ¥15 图论相关的数学问题,共10个