1. 程式人生 > 其它 >利用sqlite3和wx庫搭建GUI+SQL

利用sqlite3和wx庫搭建GUI+SQL

# -*- coding:utf-8 -*-
import wx
import sqlite3
class MyFrame(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, '使用者註冊or查詢', size=(400,300))
#建立面板
panel = wx.Panel(self)

#建立“查詢”,“註冊”和“取消”按鈕,並繫結事件
self.bt_check = wx.Button(panel, label ='查詢')
self.bt_check.Bind(wx.EVT_BUTTON,self.OnclickSubmit)
self.bt_register = wx.Button(panel, label = '註冊')
self.bt_register.Bind(wx.EVT_BUTTON,self.OnclickRegister)
#建立文字和,左對齊
self.title = wx.StaticText(panel, label="請輸入使用者名稱(新使用者第一次登陸請輸入在註冊欄)")
self.label_user = wx.StaticText(panel, label="使用者名稱:")
self.text_user = wx.TextCtrl(panel, style=wx.TE_LEFT)
self.label_regis1 = wx.StaticText(panel,label="註冊使用者名稱")
self.text_regis1 = wx.TextCtrl(panel, style=wx.TE_LEFT)
self.label_regis2 = wx.StaticText(panel,label="註冊使用者學號")
self.text_regis2 = wx.TextCtrl(panel, style=wx.TE_LEFT)
#新增容器,容器中控制元件橫向排列
hsizer_user = wx.BoxSizer(wx.HORIZONTAL)
hsizer_user.Add(self.label_user, proportion=0, flag=wx.ALL, border=5)
hsizer_user.Add(self.text_user, proportion=1, flag=wx.ALL, border=5)
hsizer_regis1 = wx.BoxSizer(wx.HORIZONTAL)
hsizer_regis1.Add(self.label_regis1, proportion=0, flag=wx.ALL, border=5)
hsizer_regis1.Add(self.text_regis1, proportion=0, flag=wx.ALL, border=5)
hsizer_regis2 = wx.BoxSizer(wx.HORIZONTAL)
hsizer_regis2.Add(self.label_regis2, proportion=0, flag=wx.ALL, border=5)
hsizer_regis2.Add(self.text_regis2, proportion=0, flag=wx.ALL, border=5)
hsizer_button = wx.BoxSizer(wx.HORIZONTAL)
hsizer_button.Add(self.bt_check, proportion=0, flag=wx.ALIGN_CENTER, border=5)
hsizer_button.Add(self.bt_register, proportion=0, flag=wx.ALIGN_CENTER, border=5)
#新增容器,容器中的空間縱向排列
vsizer_all = wx.BoxSizer(wx.VERTICAL)
vsizer_all.Add(self.title, proportion=0, flag=wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER, border=15)
vsizer_all.Add(hsizer_user, proportion=0, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=45)
vsizer_all.Add(hsizer_regis1, proportion=0, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=45)
vsizer_all.Add(hsizer_regis2, proportion=0, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=45)
vsizer_all.Add(hsizer_button, proportion=0, flag=wx.ALIGN_CENTER | wx.TOP, border=15)
panel.SetSizer(vsizer_all)
def OnclickSubmit(self,event):
"""單擊查詢按鈕,執行方法"""
username = self.text_user.GetValue() #獲取輸入的使用者名稱
conn = sqlite3.connect('StudentDate.db') #連線資料庫
cursor = conn.cursor() #建立遊標
cursor.execute('select * from user') #執行查詢語句
result1 = cursor.fetchone() #獲取查詢結果
if username == "" :
message = "使用者名稱不能為空"
wx.MessageBox(message)
elif username == str(result1[0]):
wx.MessageBox(result1[1])
else:
wx.MessageBox("使用者名稱不正確")

def OnclickRegister(self,event):
"""單擊註冊按鈕,執行方法"""
newName = self.text_regis1.GetValue()
newNum = self.text_regis2.GetValue()
date=(newNum,newName,)
if newName == "" or newNum == "" :
wx.MessageBox("註冊名與註冊學號不能為空") #彈出提示框
else:
conn = sqlite3.connect('StudentDate.db') #連線資料庫
cursor = conn.cursor() #建立遊標
#執行插入語句,新增學生資訊
cursor.executemany("insert into user (id, name) values (?,?)", ([date[0]],[date[1]]))
cursor.close() #關閉遊標
conn.commit() #提交事務
conn.close() #關閉連線
wx.MessageBox("註冊成功")


if __name__ == '__main__':
app = wx.App() #初始化
frame = MyFrame(parent=None,id=-1) #例項化MyFrame類,並傳遞引數
frame.Show() #顯示視窗
app.MainLoop() #呼叫主迴圈方法