Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wxPython显示一个登录框_Python_Wxpython - Fatal编程技术网

wxPython显示一个登录框

wxPython显示一个登录框,python,wxpython,Python,Wxpython,我正在尝试用wxPython(绝对初学者)构建一个小应用程序,在其中显示内容之前显示一个登录框。我创建了一个框架,框架内有一个面板,上面有一个flexigrid,用来放置登录表单,但没有显示。如果启动应用程序,则登录表单不可见。如果我调整应用程序的大小,则会显示登录框。知道为什么吗?以下是我目前的代码: 导入wx 类AP_应用程序(wx.App): def OnInit(自身): frame=AP_大型机(“测试应用程序”(0,0)、(650,350)) frame.Show() self.Se

我正在尝试用wxPython(绝对初学者)构建一个小应用程序,在其中显示内容之前显示一个登录框。我创建了一个框架,框架内有一个面板,上面有一个flexigrid,用来放置登录表单,但没有显示。如果启动应用程序,则登录表单不可见。如果我调整应用程序的大小,则会显示登录框。知道为什么吗?以下是我目前的代码:

导入wx
类AP_应用程序(wx.App):
def OnInit(自身):
frame=AP_大型机(“测试应用程序”(0,0)、(650,350))
frame.Show()
self.SetTopWindow(框架)
loginPanel=AP_loginPanel(帧)
self.Bind(wx.EVT\u CLOSE,self.OnCloseWindow)
返回真值
def OnCloseWindow(自身、事件):
自我毁灭
AP_级主机(wx.机架):
定义初始(自身、标题、位置、大小):
wx.Frame.\uuuuu init\uuuuuuuuux(self,None,-1,title,pos,size)
self.CreateStatusBar()
类AP_LoginPanel(wx.面板):
定义初始化(自身,帧):
self.panel=wx.panel(框架)
self.frame=frame
self.frame.SetStatusText(“需要身份验证!”)
self.showLoginBox()
def showLoginBox(自身):#创建尺寸器
sizer=wx.FlexGridSizer(行=3,列=2,hgap=5,vgap=15)
#用户名
self.txt_Username=wx.TextCtrl(self.panel,1,size=(150,-1))
lbl_Username=wx.StaticText(self.panel,-1,“用户名:”)
sizer.Add(lbl_用户名,0,wx.LEFT | wx.TOP | wx.RIGHT,50)
sizer.Add(self.txt_用户名,0,wx.TOP | wx.RIGHT,50)
#密码
self.txt_Password=wx.TextCtrl(self.panel,1,size=(150,-1),style=wx.TE_Password)
lbl_Password=wx.StaticText(self.panel,-1,“密码:”)
sizer.Add(lbl_密码,0,wx.LEFT | wx.RIGHT,50)
sizer.Add(self.txt_密码,0,wx.RIGHT,50)
#提交按钮
btn_进程=wx.按钮(self.panel,-1,“&Login”)
self.panel.Bind(wx.EVT_按钮、self.OnSubmit、btn_进程)
sizer.Add(btn_过程,0,wx.LEFT,50)
自我面板设置器(施胶器)
提交时的def(自身、事件):
UserText=self.txt\u Username.GetValue()
PasswordText=self.txt\u Password.GetValue()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app=AP_app()
app.MainLoop()

我刚刚发现调用frame.Show()太快了。:)

请注意为什么会有不同:框架将在框架的
EVT_SIZE
处理程序中管理其内容的布局(通过大小调整器,或通过调整单个子项的大小来填充框架)。当您调用
Show
时,它将获得其第一个大小事件,但此时没有任何可调整大小的内容。然后,当您添加面板时,它只是以一个小的默认大小开始,并一直保持这种方式,直到帧获得另一个大小事件。