Guest User

Untitled

a guest
Dec 7th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.94 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. import wx
  4. import sqlite3
  5.  
  6. class LoginFrame(wx.Frame):
  7. def __init__(self, parent):
  8. wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition,
  9. size=wx.Size(350, 200), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
  10.  
  11. self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
  12.  
  13. sbSizerLogin = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, u"登录"), wx.VERTICAL)
  14.  
  15. usernamegSizer = wx.GridSizer(0, 2, 0, 0)
  16.  
  17. self.m_staticTextusername = wx.StaticText(sbSizerLogin.GetStaticBox(), wx.ID_ANY, u"用户名", wx.DefaultPosition,
  18. wx.DefaultSize, 0)
  19. self.m_staticTextusername.Wrap(-1)
  20. usernamegSizer.Add(self.m_staticTextusername, 0, wx.ALL | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)
  21.  
  22. self.m_textCtrlusername = wx.TextCtrl(sbSizerLogin.GetStaticBox(), wx.ID_ANY, wx.EmptyString,
  23. wx.DefaultPosition, wx.DefaultSize, 0)
  24. usernamegSizer.Add(self.m_textCtrlusername, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
  25.  
  26. sbSizerLogin.Add(usernamegSizer, 1, wx.EXPAND, 5)
  27.  
  28. passwordgSizer = wx.GridSizer(0, 2, 0, 0)
  29.  
  30. self.m_staticTextpassword = wx.StaticText(sbSizerLogin.GetStaticBox(), wx.ID_ANY, u"密码", wx.DefaultPosition,
  31. wx.DefaultSize, 0)
  32. self.m_staticTextpassword.Wrap(-1)
  33. passwordgSizer.Add(self.m_staticTextpassword, 0, wx.ALL | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)
  34.  
  35. self.m_textCtrlpassword = wx.TextCtrl(sbSizerLogin.GetStaticBox(), wx.ID_ANY, wx.EmptyString,
  36. wx.DefaultPosition, wx.DefaultSize, wx.TE_PASSWORD)
  37. passwordgSizer.Add(self.m_textCtrlpassword, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
  38.  
  39. sbSizerLogin.Add(passwordgSizer, 1, wx.EXPAND, 5)
  40.  
  41. buttonbSizer = wx.BoxSizer(wx.HORIZONTAL)
  42.  
  43. buttonbSizer.Add((0, 0), 1, wx.EXPAND, 5)
  44.  
  45. self.m_buttonCancel = wx.Button(sbSizerLogin.GetStaticBox(), wx.ID_ANY, u"取消", wx.DefaultPosition,
  46. wx.DefaultSize, 0)
  47. buttonbSizer.Add(self.m_buttonCancel, 0, wx.ALL, 5)
  48.  
  49. self.m_buttonOK = wx.Button(sbSizerLogin.GetStaticBox(), wx.ID_ANY, u"确定", wx.DefaultPosition, wx.DefaultSize,
  50. 0)
  51. buttonbSizer.Add(self.m_buttonOK, 0, wx.ALL, 5)
  52.  
  53. buttonbSizer.Add((0, 0), 1, wx.EXPAND, 5)
  54.  
  55. sbSizerLogin.Add(buttonbSizer, 1, wx.EXPAND, 5)
  56.  
  57. self.SetSizer(sbSizerLogin)
  58. self.Layout()
  59.  
  60. self.Centre(wx.BOTH)
  61.  
  62. # Connect Events
  63. self.m_buttonCancel.Bind(wx.EVT_BUTTON, self.loginreset)
  64. self.m_buttonOK.Bind(wx.EVT_BUTTON, self.loginsubmit)
  65.  
  66. def __del__(self):
  67. pass
  68.  
  69. def loginsubmit(self, event):
  70. login_user = (self.m_textCtrlusername.GetValue(),)
  71. conn = sqlite3.connect('t.db')
  72. cur = conn.execute('SELECT * FROM admin WHERE uname=?', login_user)
  73. res = cur.fetchone()
  74. conn.close()
  75. if res is None:
  76. wx.MessageBox("用户不存在!")
  77. else:
  78. if res[1] != self.m_textCtrlpassword.GetValue():
  79. wx.MessageBox("密码不正确!")
  80. else:
  81. wx.MessageBox("登录成功!")
  82. self.Close()
  83. newf = MainGUI(None)
  84. newf.Show(True)
  85.  
  86. def loginreset(self, event):
  87. self.Close()
  88.  
  89.  
  90. class MainGUI(wx.Frame):
  91. def __init__(self, parent):
  92. wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition,
  93. size=wx.Size(200, 350), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
  94.  
  95. self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
  96.  
  97. bSizerMain = wx.BoxSizer(wx.VERTICAL)
  98.  
  99. bSizersno = wx.BoxSizer(wx.HORIZONTAL)
  100.  
  101. self.m_staticTextsno = wx.StaticText(self, wx.ID_ANY, u"学号", wx.DefaultPosition, wx.DefaultSize, 0)
  102. self.m_staticTextsno.Wrap(-1)
  103. bSizersno.Add(self.m_staticTextsno, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
  104.  
  105. self.m_textCtrlsno = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
  106. bSizersno.Add(self.m_textCtrlsno, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
  107.  
  108. bSizerMain.Add(bSizersno, 1, wx.EXPAND, 5)
  109.  
  110. bSizer7 = wx.BoxSizer(wx.HORIZONTAL)
  111.  
  112. self.m_staticTextsname = wx.StaticText(self, wx.ID_ANY, u"姓名", wx.DefaultPosition, wx.DefaultSize, 0)
  113. self.m_staticTextsname.Wrap(-1)
  114. bSizer7.Add(self.m_staticTextsname, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
  115.  
  116. self.m_textCtrlsname = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
  117. bSizer7.Add(self.m_textCtrlsname, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
  118.  
  119. bSizerMain.Add(bSizer7, 1, wx.EXPAND, 5)
  120.  
  121. bSizer8 = wx.BoxSizer(wx.HORIZONTAL)
  122.  
  123. self.m_staticTextsdept = wx.StaticText(self, wx.ID_ANY, u"所在系", wx.DefaultPosition, wx.DefaultSize, 0)
  124. self.m_staticTextsdept.Wrap(-1)
  125. bSizer8.Add(self.m_staticTextsdept, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
  126.  
  127. self.m_textCtrlsdept = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
  128. bSizer8.Add(self.m_textCtrlsdept, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
  129.  
  130. bSizerMain.Add(bSizer8, 1, wx.EXPAND, 5)
  131.  
  132. bSizer9 = wx.BoxSizer(wx.HORIZONTAL)
  133.  
  134. self.m_staticTextsbirth = wx.StaticText(self, wx.ID_ANY, u"出生日期", wx.DefaultPosition, wx.DefaultSize, 0)
  135. self.m_staticTextsbirth.Wrap(-1)
  136. bSizer9.Add(self.m_staticTextsbirth, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
  137.  
  138. self.m_textCtrlsbirth = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
  139. bSizer9.Add(self.m_textCtrlsbirth, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
  140.  
  141. bSizerMain.Add(bSizer9, 1, wx.EXPAND, 5)
  142.  
  143. bSizer10 = wx.BoxSizer(wx.HORIZONTAL)
  144.  
  145. self.m_staticTextscredit = wx.StaticText(self, wx.ID_ANY, u"学分", wx.DefaultPosition, wx.DefaultSize, 0)
  146. self.m_staticTextscredit.Wrap(-1)
  147. bSizer10.Add(self.m_staticTextscredit, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
  148.  
  149. self.m_textCtrlscredit = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
  150. bSizer10.Add(self.m_textCtrlscredit, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5)
  151.  
  152. bSizerMain.Add(bSizer10, 1, wx.EXPAND, 5)
  153.  
  154. gSizer6 = wx.GridSizer(0, 2, 0, 0)
  155.  
  156. self.m_buttonsave = wx.Button(self, wx.ID_ANY, u"提交", wx.DefaultPosition, wx.DefaultSize, 0)
  157. gSizer6.Add(self.m_buttonsave, 0, wx.ALL | wx.EXPAND, 5)
  158.  
  159. self.m_buttonload = wx.Button(self, wx.ID_ANY, u"读取", wx.DefaultPosition, wx.DefaultSize, 0)
  160. gSizer6.Add(self.m_buttonload, 0, wx.ALL | wx.EXPAND, 5)
  161.  
  162. bSizerMain.Add(gSizer6, 1, wx.EXPAND, 5)
  163.  
  164. self.SetSizer(bSizerMain)
  165. self.Layout()
  166.  
  167. self.Centre(wx.BOTH)
  168.  
  169. # Connect Events
  170. self.m_buttonsave.Bind(wx.EVT_BUTTON, self.sqlSave)
  171. self.m_buttonload.Bind(wx.EVT_BUTTON, self.sqlLoad)
  172.  
  173. def __del__(self):
  174. pass
  175.  
  176. # Virtual event handlers, overide them in your derived class
  177. def sqlSave(self, event):
  178. sno = self.m_textCtrlsno.GetValue()
  179. sname = self.m_textCtrlsname.GetValue()
  180. sdept = self.m_textCtrlsdept.GetValue()
  181. sbirth = self.m_textCtrlsbirth.GetValue()
  182. scredit = self.m_textCtrlscredit.GetValue()
  183. conn = sqlite3.connect('t.db')
  184. if sno == '':
  185. wx.MessageBox("学号不能为空!")
  186. return
  187. else:
  188. data = (sno, sname, sdept, sbirth, scredit)
  189. try:
  190. conn.execute('INSERT INTO xs VALUES (?,?,?,?,?)', data)
  191. except sqlite3.IntegrityError:
  192. wx.MessageBox("学号%s已经存在!" % (sno))
  193. except sqlite3.OperationalError:
  194. wx.MessageBox("发生错误!")
  195. conn.commit()
  196. conn.close()
  197. wx.MessageBox("操作成功!")
  198. self.m_textCtrlsname.SetValue('')
  199. self.m_textCtrlsdept.SetValue('')
  200. self.m_textCtrlsbirth.SetValue('')
  201. self.m_textCtrlscredit.SetValue('')
  202.  
  203. def sqlLoad(self, event):
  204. sno = self.m_textCtrlsno.GetValue()
  205. conn = sqlite3.connect('t.db')
  206. cur = conn.execute('SELECT * FROM xs WHERE sno = ?', (sno,))
  207. ret = cur.fetchone()
  208. if ret is None:
  209. wx.MessageBox("学号%s不存在!" % (sno))
  210. else:
  211. self.m_textCtrlsno.SetValue(str(ret[0]))
  212. self.m_textCtrlsname.SetValue(ret[1])
  213. self.m_textCtrlsdept.SetValue(ret[2])
  214. self.m_textCtrlsbirth.SetValue(str(ret[3]))
  215. self.m_textCtrlscredit.SetValue(str(ret[4]))
  216. conn.close()
  217.  
  218.  
  219. app = wx.App(False)
  220. frame = LoginFrame(None)
  221. # frame = MainGUI(None)
  222. frame.Show(True)
  223. app.MainLoop()
Add Comment
Please, Sign In to add comment