2005年11月07日 星期一 16:40
谢谢,如: 用户名: 输入框 密码: 输入框 登陆 取消 我用box布局一直没有搞定。。谢谢各位了。 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051107/5fe2843f/attachment.html
2005年11月07日 星期一 16:48
mydooom wrote: > 谢谢,如: > 用户名: 输入框 > 密码: 输入框 > 登陆 取消 > > > 我用box布局一直没有搞定。。谢谢各位了。 哈哈,正好手头有一个登录对话框的代码,不过是用FlexGridSizer的。 # --*-- encoding: UTF-8 --*-- import wx class LoginDialog(wx.Dialog): def __init__(self, parent, id=-1): wx.Dialog.__init__(self, parent, id, u'用户登录') self.ctrl_username = wx.TextCtrl(self, -1) self.ctrl_passwd = wx.TextCtrl(self, -1, style=wx.TE_PASSWORD) self.ctrl_login = wx.Button(self, -1, u'登录') self.ctrl_login.SetDefault() self.ctrl_cancel = wx.Button(self, wx.ID_CANCEL, u'取消') # self.ctrl_register = wx.Button(self, -1, u'注册') self._layout() def _layout(self): sizer = wx.BoxSizer(wx.VERTICAL) b = wx.StaticBoxSizer(wx.StaticBox(self, -1, u'登录'), wx.VERTICAL) b.Add(wx.StaticText(self, -1, u'请输入用户名和密码\n' u'(游客请输入guest,密码为空)'), 0, wx.ALL, 3) grid = wx.FlexGridSizer(2, 0, 3, 3) grid.AddGrowableCol(1) grid.Add(wx.StaticText(self, -1, u'用户名:')) grid.Add(self.ctrl_username, 0, wx.GROW) grid.Add(wx.StaticText(self, -1, u'密码:')) grid.Add(self.ctrl_passwd, 0, wx.GROW) b.Add(grid, 0, wx.GROW|wx.ALL, 3) sizer.Add(b, 0, wx.GROW|wx.ALL, 3) h = wx.BoxSizer(wx.HORIZONTAL) h.Add(self.ctrl_login, 0, wx.ALL, 3) h.Add(self.ctrl_cancel, 0, wx.ALL, 3) h.Add((0, 0), 1) # h.Add(self.ctrl_register, 0, wx.ALL, 3) sizer.Add(h, 0, wx.GROW) self.SetAutoLayout(True) self.SetSizerAndFit(sizer) if __name__ == '__main__': app = wx.PySimpleApp() dlg = LoginDialog(None) dlg.ShowModal() dlg.Destroy() app.MainLoop() -- Qiangning Hong, Registered Linux User #396996 My Blog: http://www.hn.org/hongqn RSS: http://feeds.feedburner.com/hongqn
2005年11月07日 星期一 16:58
在 05-11-7,mydooom<mydooom at gmail.com> 写道: > 谢谢,如: > 用户名: 输入框 > 密码: 输入框 > 登陆 取消 > > > 我用box布局一直没有搞定。。谢谢各位了。 class UserDialog(wx.Dialog): def __init__(self, parent, ftpname, user, password): wx.Dialog.__init__(self, parent, -1, style = wx.DEFAULT_DIALOG_STYLE, title = tr("Ftp site: %s") % ftpname) box = wx.BoxSizer(wx.VERTICAL) box1 = wx.BoxSizer(wx.HORIZONTAL) #username obj = wx.StaticText(self, -1, tr('User Name:')) box1.Add(obj, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT, 2) self.txtUser = wx.TextCtrl(self, -1, user, size=(80, 20)) box1.Add(self.txtUser, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) box.Add(box1, 0, wx.ALL, 3) box1 = wx.BoxSizer(wx.HORIZONTAL) #password obj = wx.StaticText(self, -1, tr('Password:')) box1.Add(obj, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT|wx.RIGHT, 2) self.txtPassword = wx.TextCtrl(self, -1, password, size=(80, 20), style=wx.TE_PASSWORD) box1.Add(self.txtPassword, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 2) box.Add(box1, 0, wx.ALL, 3) box2 = wx.BoxSizer(wx.HORIZONTAL) btnOK = wx.Button(self, wx.ID_OK, tr("OK"), size=(60, -1)) btnOK.SetDefault() box2.Add(btnOK, 0, wx.ALIGN_RIGHT|wx.RIGHT, 5) btnCancel = wx.Button(self, wx.ID_CANCEL, tr("Cancel"), size=(60, -1)) box2.Add(btnCancel, 0, wx.ALIGN_LEFT|wx.LEFT, 5) box.Add(box2, 0, wx.ALIGN_CENTER|wx.BOTTOM, 5) self.SetSizer(box) self.SetAutoLayout(True) box.Fit(self) wx.EVT_UPDATE_UI(btnOK, wx.ID_OK, self.OnUpdateUI) def GetValue(self): return self.txtUser.GetValue(), self.txtPassword.GetValue() def OnUpdateUI(self, event): eid = event.GetId() if eid == wx.ID_OK: event.Enable(len(self.txtUser.GetValue()) > 0) 这是在NewEdit中的mixins/FtpClass.py中的代码,与一般的对话框一样使用,如: dlg = UserDialog(self, site['name'], user, password) answer = dlg.ShowModal() if answer == wx.ID_OK: user, password = dlg.GetValue() dlg.Destroy() 如果使用EasyGui可以减少界面生成的代码。 -- I like python! My Blog: http://www.donews.net/limodou NewEdit Maillist: http://groups.google.com/group/NewEdit
Zeuux © 2025
京ICP备05028076号