Python перестал работать при добавлении sizer в прокручиваемую панель в wxpython - PullRequest
0 голосов
/ 14 апреля 2020
import wx
import wx.adv
from wx.lib.masked import NumCtrl
import wx.lib.scrolledpanel
import wx.lib.masked as masked
from wx.lib.masked import Field, BaseMaskedTextCtrl


class mainWindow(wx.Frame):
  def __init__(self, camera):


    #inheritence
    wx.Frame.__init__(self, None, style= wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN, size=(1370,720),pos=(0,0))
    self.Title = "Registration"
    self.SetSize(1370,720)
    self.Maximize(True)
    self.SetBackgroundColour('#f0f0f0')
    menubar = wx.MenuBar()


    #main ui
    self.mainpanel = wx.Panel(self, size=(1370,720), pos=(0,0))
    self.mainpanel.SetBackgroundColour('#f0f0f0')


    mid_font = wx.Font(22, wx.DECORATIVE,wx.ITALIC,wx.BOLD)
    #------------form panel-------------

    self.scroll_panel = wx.lib.scrolledpanel.ScrolledPanel(self.mainpanel,size=(380,540), pos=(30,20),style=wx.NO_BORDER)

    self.namepanel = wx.Panel(self.scroll_panel,size=(350,800), pos=(0,0),style=wx.DOUBLE_BORDER)
    self.namepanel.SetForegroundColour('#1b262c')

    self.Sizer = wx.BoxSizer( wx.VERTICAL )
    self.scroll_panel.SetSizer(self.Sizer)


    small_font = wx.Font(11, wx.DECORATIVE,wx.ITALIC,wx.BOLD)


    fname = wx.StaticText(self.namepanel, -1, "First Name",pos=(30,70))
    fname.SetFont(small_font)
    self.fname = wx.TextCtrl(self.namepanel, pos=(155,70), size=(160, 25))

    mname = wx.StaticText(self.namepanel, -1, "Middle Name",pos=(30,110))
    mname.SetFont(small_font)
    self.mname = wx.TextCtrl(self.namepanel, pos=(155,110), size=(160, 25))

    lname = wx.StaticText(self.namepanel, -1, "Last Name",pos=(30,150))
    lname.SetFont(small_font)
    self.lname = wx.TextCtrl(self.namepanel, pos=(155,150), size=(160, 25))



    button_font = wx.Font(12, wx.DECORATIVE,wx.NORMAL,wx.BOLD)
    self.add = wx.Button(self.namepanel, -1, "Confirm", pos=(110,200),size=(130, 30),style=wx.DOUBLE_BORDER)
    #self.add.Bind(wx.EVT_BUTTON, self.addinfo)

    self.add.SetBackgroundColour('#FFFFFF')
    self.add.SetForegroundColour('#1b262c')
    self.add.SetFont(button_font)

    self.Sizer.Add( self.namepanel, 0, wx.CENTER|wx.ALL, 5 )

    self.scroll_panel.SetupScrolling(scrollToTop=False)






class all_module(wx.Frame):
  def __init__(self):


    #inheritence
    wx.Frame.__init__(self, None, style= wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN,pos=(0,0))

    self.infopanel = wx.Panel(self,size=(1000,780), pos=(0, 0),style=wx.DOUBLE_BORDER)

    self.registration = wx.Button(self.infopanel, -1, "Registration", pos=(0,0),size=(130, 30),style=wx.DOUBLE_BORDER)
    self.registration.Bind(wx.EVT_BUTTON, self.register)



  def register(self, event):

      window = mainWindow(camera)
      window.Show()





app = wx.App()
window = all_module()
window.Show()
app.MainLoop()

Это наш код, в котором есть простая регистрация прокручиваемая панель и она добавляется в boxsizer . когда я нажимаю кнопку закрытия, я получаю эту ошибку, что python перестал работать. но когда я удаляю sizer и помещаю все stati c text и textctrl вне sizer, программа плавно закрывается. Но если я добавляю в sizer, я получаю сообщение об ошибке, я пробовал все способы, такие как self.Close () и self.Destroy () , но ничего не помогло. Любое предложение будет оценено для нас, спасибо заранее !!

Python перестал работать

.

enter image description here

...