wxpython中的开关面板问题
我最近正在尝试学习wxpythong,现在我遇到了一个问题,当我破坏一个面板并通过函数创建另一个面板时,面板不会显示,直到我手动更改框架的大小。
选择 | 换行 | 行号
- import wx
- import random
- class MyFrame(wx.Frame):
- num1=[0,0,0,0,0,0]
- num2=[0,0,0,0,0,0]
- opp=["-","-","-","-","-","-"]
- ans=[0,0,0,0,0,0]
- ansu=[0,0,0,0,0,0]
- oppr=int()
- score=int(0)
- for i in range (len (ans)):
- ans[i]=0
- oppr=random.randint(1,4)
- num1[i]= str(random.randint(0,99))
- num2[i]= str(random.randint(0,99))
- if oppr == 1:
- opp[i]="+"
- if oppr==2:
- opp[i]=="-"
- if oppr== 3:
- opp[i]="x"
- if oppr==4:
- opp[i]="/"
- a = int(random.randint(1,20))
- b = int(random.randint(1,20))
- c = int()
- c=a * b
- print(c)
- print(b)
- print(a)
- print(i)
- num1[i]=str(c)
- num2[i]=str(b)
- def __init__(self):
- super().__init__(parent=None,title="new",size=(1000,1000),pos=(100,100))
- self.paneln = wx.Panel(parent=self)
- self.Refresh()
- self.paneln.SetBackgroundColour(wx.GREEN)
- vert=wx.BoxSizer(wx.VERTICAL)
- self.math=[
- wx.Bitmap("C:/Users/windows/Desktop/pi5oA6xKT.gif",wx.BITMAP_TYPE_GIF)
- ]
- self.image=wx.StaticBitmap(self.paneln,-1,self.math[0])
- vert.Add(self.image,proportion=2,flag=wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND|wx.RIGHT|wx.LEFT|wx.BOTTOM|wx.CENTER,border=10)
- self.login=wx.Button(parent=self.paneln,id=101, label='login')
- vert.Add(self.login,proportion=2,flag=wx.EXPAND|wx.RIGHT|wx.LEFT|wx.TOP|wx.BOTTOM|wx.CENTER,border=100)
- self.login.SetBackgroundColour("PURPLE")
- self.paneln.SetSizer(vert)
- self.Bind(wx.EVT_BUTTON,self.newf,id=101)
- def newf (self,event):
- self.paneln.Destroy()
- self.panel= wx.Panel(self)
- self.panel.SetBackgroundColour(wx.GREEN)
- hs1=wx.BoxSizer()
- vs=wx.BoxSizer(wx.VERTICAL)
- self.vs2=wx.BoxSizer(wx.VERTICAL)
- vs3=wx.BoxSizer(wx.VERTICAL)
- hs2=wx.BoxSizer()
- hs3=wx.BoxSizer()
- hs4=wx.BoxSizer()
- hs5=wx.BoxSizer()
- hs6=wx.BoxSizer()
- hs7=wx.BoxSizer()
- hs8=wx.BoxSizer()
- hsm=wx.BoxSizer()
- self.title=wx.StaticText(parent=self.panel,label="Math Test")
- vs.Add(self.title,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.title2=wx.StaticText(parent=self.panel,label="practice test")
- vs.Add(self.title2,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- #############################################################################################
- self.test1_1=wx.StaticText(parent=self.panel,label=self.num1[0])
- hs1.Add(self.test1_1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test_opp1_1=wx.StaticText(parent=self.panel,label=self.opp[0])
- hs1.Add(self.test_opp1_1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test1_2=wx.StaticText(parent=self.panel,label=self.num2[0])
- hs1.Add(self.test1_2,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test_e=wx.StaticText(parent=self.panel,label="=")
- hs1.Add(self.test_e,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.ans1=wx.TextCtrl(self.panel,style=wx.TE_PROCESS_ENTER,id=1)
- hs1.Add(self.ans1,proportion=1,flag=wx.FIXED_MINSIZE|wx.BOTTOM|wx.CENTER,border=10)
- vs.Add(hs1,proportion=1,flag=wx.CENTER,)
- #--------------------------------------------------------------------------------------------------
- self.test2_1=wx.StaticText(parent=self.panel,label=self.num1[1])
- hs2.Add(self.test2_1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test_opp2_1=wx.StaticText(parent=self.panel,label=self.opp[1])
- hs2.Add(self.test_opp2_1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test2_2=wx.StaticText(parent=self.panel,label=self.num2[1])
- hs2.Add(self.test2_2,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test_e=wx.StaticText(parent=self.panel,label="=")
- hs2.Add(self.test_e,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.ans2=wx.TextCtrl(self.panel,style=wx.TE_PROCESS_ENTER,id=2)
- hs2.Add(self.ans2,proportion=1,flag=wx.FIXED_MINSIZE|wx.BOTTOM|wx.CENTER,border=10)
- vs.Add(hs2,proportion=1,flag=wx.CENTER,)
- #----------------------------------------------------------------------------------------------------
- self.test3_1=wx.StaticText(parent=self.panel,label=self.num1[2])
- hs3.Add(self.test3_1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test_opp3_1=wx.StaticText(parent=self.panel,label=self.opp[2])
- hs3.Add(self.test_opp3_1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test3_2=wx.StaticText(parent=self.panel,label=self.num2[2])
- hs3.Add(self.test3_2,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test_e=wx.StaticText(parent=self.panel,label="=")
- hs3.Add(self.test_e,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.ans3=wx.TextCtrl(self.panel,style=wx.TE_PROCESS_ENTER,id=3)
- hs3.Add(self.ans3,proportion=1,flag=wx.FIXED_MINSIZE|wx.BOTTOM|wx.CENTER,border=10)
- vs.Add(hs3,proportion=1,flag=wx.CENTER,)
- #-------------------------------------------------------------------------------------------------------
- self.test4_1=wx.StaticText(parent=self.panel,label=self.num1[3])
- hs4.Add(self.test4_1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test_opp4_1=wx.StaticText(parent=self.panel,label=self.opp[3])
- hs4.Add(self.test_opp4_1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test4_2=wx.StaticText(parent=self.panel,label=self.num2[3])
- hs4.Add(self.test4_2,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test_e=wx.StaticText(parent=self.panel,label="=")
- hs4.Add(self.test_e,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.ans4=wx.TextCtrl(self.panel,style=wx.TE_PROCESS_ENTER,id=4)
- hs4.Add(self.ans4,proportion=1,flag=wx.FIXED_MINSIZE|wx.BOTTOM|wx.CENTER,border=10)
- vs.Add(hs4,proportion=1,flag=wx.CENTER,)
- #-------------------------------------------------------------------------------------------------------
- self.test5_1=wx.StaticText(parent=self.panel,label=self.num1[4])
- hs5.Add(self.test5_1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test_opp5_1=wx.StaticText(parent=self.panel,label=self.opp[4])
- hs5.Add(self.test_opp5_1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test5_2=wx.StaticText(parent=self.panel,label=self.num2[4])
- hs5.Add(self.test5_2,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test_e=wx.StaticText(parent=self.panel,label="=")
- hs5.Add(self.test_e,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.ans5=wx.TextCtrl(self.panel,style=wx.TE_PROCESS_ENTER,id=5)
- hs5.Add(self.ans5,proportion=1,flag=wx.FIXED_MINSIZE|wx.BOTTOM|wx.CENTER,border=10)
- vs.Add(hs5,proportion=1,flag=wx.CENTER,)
- #-------------------------------------------------------------------------------------------------------
- self.test6_1=wx.StaticText(parent=self.panel,label=self.num1[5])
- hs6.Add(self.test6_1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test_opp6_1=wx.StaticText(parent=self.panel,label=self.opp[5])
- hs6.Add(self.test_opp6_1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test6_2=wx.StaticText(parent=self.panel,label=self.num2[5])
- hs6.Add(self.test6_2,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.test_e=wx.StaticText(parent=self.panel,label="=")
- hs6.Add(self.test_e,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.ans6=wx.TextCtrl(self.panel,style=wx.TE_PROCESS_ENTER,id=6)
- hs6.Add(self.ans6,proportion=1,flag=wx.FIXED_MINSIZE|wx.BOTTOM|wx.CENTER,border=10)
- vs.Add(hs6,proportion=1,flag=wx.CENTER,)
- #######################################################################################################
- self.score1=wx.StaticText(parent=self.panel,label=str(self.score))
- hs7.Add(self.score1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.score2=wx.StaticText(parent=self.panel,label="/6")
- hs7.Add(self.score2,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- vs.Add(hs7,proportion=1,flag=wx.CENTER,)
- #-------------------------------------------------------------------------------
- self.rep1=wx.StaticText(parent=self.panel,label=" [1] ")
- hs8.Add(self.rep1,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.rep2=wx.StaticText(parent=self.panel,label=" [2] ")
- hs8.Add(self.rep2,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.rep3=wx.StaticText(parent=self.panel,label=" [3] ")
- hs8.Add(self.rep3,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.rep4=wx.StaticText(parent=self.panel,label=" [4] ")
- hs8.Add(self.rep4,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.rep5=wx.StaticText(parent=self.panel,label=" [5] ")
- hs8.Add(self.rep5,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.rep6=wx.StaticText(parent=self.panel,label=" [6] ")
- hs8.Add(self.rep6,proportion=1,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- vs.Add(hs8,proportion=1,flag=wx.CENTER,)
- #########################################################################################################
- self.submit=wx.Button(parent=self.panel,id=50, label='submit')
- vs.Add(self.submit,proportion=2,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.submit.SetBackgroundColour("PURPLE")
- #-------------------------------------------------------------------------------------------------------
- self.next=wx.Button(parent=self.panel,id=49, label='next')
- vs.Add(self.next,proportion=2,flag=wx.EXPAND|wx.BOTTOM|wx.CENTER,border=10)
- self.next.SetBackgroundColour("PURPLE")
- ############################################################################################
- self.teach=wx.StaticText(parent=self.panel,label="teacher section:")
- self.vs2.Add(self.teach,proportion=1,flag=wx.EXPAND|wx.RIGHT|wx.LEFT|wx.BOTTOM|wx.CENTER,border=10)
- self.teacher_gif=[
- wx.Bitmap("C:/Users/windows/Desktop/image.png",wx.BITMAP_TYPE_PNG)
- ]
- self.image=wx.StaticBitmap(self.panel,-1,self.teacher_gif[0])
- self.vs2.Add(self.image,proportion=5,flag=wx.EXPAND|wx.RIGHT|wx.LEFT|wx.BOTTOM|wx.CENTER,border=10)
- self.pas=wx.StaticText(parent=self.panel,label="teacher password:")
- self.vs2.Add(self.pas,proportion=1,flag=wx.EXPAND|wx.RIGHT|wx.LEFT|wx.BOTTOM|wx.CENTER,border=50)
- self.pasw=wx.TextCtrl(self.panel,style=wx.TE_PASSWORD|wx.TE_PROCESS_ENTER,id=51)
- self.vs2.Add(self.pasw,proportion=1,flag=wx.EXPAND|wx.RIGHT|wx.LEFT|wx.BOTTOM|wx.CENTER,border=50)
- hsm.Add(vs,proportion=1,flag=wx.CENTER)
- hsm.Add(self.vs2,proportion=1,flag=wx.CENTER)
- self.panel.SetSizer(hsm)
- hsm.Layout()
- self.Refresh()
- self.Bind(wx.EVT_BUTTON,self.on_click,id=10,id2=50)
- self.Bind(wx.EVT_TEXT_ENTER,self.teach_pass,id=51)
- self.Bind(wx.EVT_TEXT,self.Set_Ans,id=0,id2=10)
- def add(self):
- self.ans[self.i]=int(self.num1[self.i])+int(self.num2[self.i]) #run algorithms to get answer sheet
- def minu(self):
- self.ans[self.i]=int(self.num1[self.i])-int(self.num2[self.i])
- def mult(self):
- self.ans[self.i]=int(self.num1[self.i])*int(self.num2[self.i])
- def divi(self):
- self.ans[self.i]=self.a
- def teach_pass(self,event):
- self.copass=self.pasw.GetValue()
- print("y")
- if self.copass=="yml192300":
- print("y")
- panel = wx.Panel(parent=self)
- self.pasw.Destroy()
- self.pasw=wx.TextCtrl(panel,style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER,id=51)
- self.vs2.Add(self.pasw,proportion=-1,flag=wx.EXPAND|wx.RIGHT|wx.LEFT|wx.BOTTOM|wx.CENTER,border=50)
- def on_click(self, event):
- source_id=event.GetId()
- print(source_id)
- if source_id==50: #submit button
- self.score=0
- for self. i in range(len (self.ans)): #use loop corresponding to the amount of answer to check every question
- if self.opp[self.i]=="+":
- self.add()
- if self.opp [self.i]=="-":
- self.minu()
- if self.opp[self.i]=="x":
- self.mult()
- if self.opp [self.i]=="/":
- self.divi()
- print(self.ans)
- print(self.ansu)
- for i in range (len (self.ans)):
- if float(self.ansu[i])==float(self.ans[i]): #check user answer with true answer
- self.score+=1
- print (self.score)
- self.score1.SetLabelText(str(self. score))
- if source_id==49: # source id 49 = next
- self.num1=[0,0,0,0,0,0]
- self.num2=[0,0,0,0,0,0]
- self.opp=["-","-","-","-","-","-"]
- self.ans=[0,0,0,0,0,0]
- self.ansu=[0,0,0,0,0,0]
- self.oppr=int()
- self.score=int(0)
- for i in range (len (self.ans)):
- self.ans[i]=0
- self.num1[i]= str(random.randint(0,99))
- self.num2[i]= str(random.randint(0,99))
- self.oppr=random.randint(1,4)
- if self.oppr == 1: # CHANGE operation to random selected
- self.opp[i]="+"
- if self.oppr==2:
- self.opp[i]=="-"
- if self.oppr== 3:
- self.opp[i]="x"
- if self.oppr==4:
- self.opp[i]="/"
- a = int(random.randint(1,20)) # Run division algorithm
- b = int(random.randint(1,20))
- c = int()
- i = int(0)
- c=a * b
- self.num1[i]=c
- self.num2[i]=b
- print(self.num1)
- print(self.num2)
- print(self.opp)
- self.test1_1.SetLabelText(str(self. num1[0]))
- self.test_opp1_1.SetLabelText(str(self. opp[0]))
- self.test1_2.SetLabelText(str(self.num2[0]))
- self.test2_1.SetLabelText(str(self. num1[1]))
- self.test_opp2_1.SetLabelText(str(self. opp[1]))
- self.test2_2.SetLabelText(str(self.num2[1]))
- self.test3_1.SetLabelText(str(self. num1[2]))
- self.test_opp3_1.SetLabelText(str(self. opp[2]))
- self.test3_2.SetLabelText(str(self.num2[2]))
- self.test4_1.SetLabelText(str(self. num1[3]))
- self.test_opp4_1.SetLabelText(str(self. opp[3]))
- self.test4_2.SetLabelText(str(self.num2[3]))
- self.test5_1.SetLabelText(str(self. num1[4]))
- self.test_opp5_1.SetLabelText(str(self. opp[4]))
- self.test5_2.SetLabelText(str(self.num2[4]))
- self.test6_1.SetLabelText(str(self. num1[5]))
- self.test_opp6_1.SetLabelText(str(self. opp[5]))
- self.test6_2.SetLabelText(str(self.num2[5]))
- self.ans1.Clear()
- self.ans2.Clear()
- self.ans3.Clear()
- self.ans4.Clear()
- self.ans5.Clear()
- self.ans6.Clear()
- def Set_Ans(self, event):
- source_id=event.GetId()
- print(source_id)
- if source_id==1:
- self.ansu[source_id-1]=self.ans1.GetValue()
- print(self.ansu[source_id-1])
- if source_id==2:
- self.ansu[source_id-1]=self.ans2.GetValue()
- print(self.ans[source_id-1])
- if source_id==3:
- self.ansu[source_id-1]=self.ans3.GetValue()
- print(self.ansu[source_id-1])
- if source_id==4:
- self.ansu[source_id-1]=self.ans4.GetValue()
- print(self.ansu[source_id-1])
- if source_id==5:
- self.ansu[source_id-1]=self.ans5.GetValue()
- print(self.ansu[source_id-1])
- if source_id==6:
- self.ansu[source_id-1]=self.ans6.GetValue()
- print(self.ansu[source_id-1])
- class App(wx.App):
- def OnInit(self):
- frame=MyFrame()
- frame.Show()
- return True
- def OnExit(self):
- print('bye')
- return 0
- if __name__=='__main__':
- app=App()
- app.MainLoop()