最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

wxpython+pymysql實(shí)現(xiàn)用戶登陸功能

 更新時(shí)間:2021年09月26日 15:14:34   作者:qq_43011496  
這篇文章主要介紹了wxpython+pymysql實(shí)現(xiàn)用戶登陸功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

wxpython最為一款python GUI庫,由于簡(jiǎn)單和輕便外加強(qiáng)大的功能而受到很多python愛好者的喜愛,pymysql作為python3.x版本連接mysql庫,應(yīng)用也非常廣泛。今天利用這兩個(gè)庫寫一個(gè)簡(jiǎn)單的用戶登陸的GUI窗口界面:

1.先看看界面的效果圖:

2.在搭建窗口時(shí)容易出現(xiàn)問題的幾點(diǎn):

設(shè)置窗口圖標(biāo):窗口左上角圖片
最好將圖片的尺寸設(shè)計(jì)為32x32的格式:

#設(shè)置窗口的左上角的圖標(biāo)
#其中參數(shù)type表示圖片的類型,還有ico,jpgm等類型
icon_1 = wx.Icon(name='python1.png',type=wx.BITMAP_TYPE_PNG)
frame.SetIcon(icon_1)

在panel中添加圖片展示:

panel = wx.Panel(frame,-1)
  # 向panel中添加圖片
image =wx.Image("python2.jpg", wx.BITMAP_TYPE_JPEG).ConvertToBitmap()
wx.StaticBitmap(panel, -1, bitmap=image, pos=(0, 0))

給登陸按鈕設(shè)計(jì)點(diǎn)擊函數(shù):
本次沒有使用圖片按鈕,只是簡(jiǎn)單的按鈕插件,所以看起來比較丑

#添加按鈕,pos參數(shù)為其位置
  self.but_login = wx.Button(panel,-1,"登陸", size=(120,50), pos=(120,300))
  self.but_register = wx.Button(panel,-1,"注冊(cè)", size=(120,50), pos=(260,300))
  #設(shè)置按鈕的顏色
  self.but_login.SetBackgroundColour("#0a74f7")
  self.but_register.SetBackgroundColour("#282c34")
  #給按鈕綁定事件
  self.Bind(wx.EVT_BUTTON,self.on_but_login,self.but_login)
  self.Bind(wx.EVT_BUTTON,self.on_but_register,self.but_register)

如果要設(shè)計(jì)圖片按鈕可以這樣實(shí)現(xiàn):

#設(shè)置圖片按鈕
pic = wx.Image('but_log.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap() # 把這個(gè)圖片的內(nèi)容妝轉(zhuǎn)化為這個(gè)pic 變量。
#pos為位置參數(shù),設(shè)置按鈕放置的位置
self.button = wx.BitmapButton(panel, -1, pic, pos=(10, 10)) # 固定的寫法使用

效果如下:

pymysql連接本地?cái)?shù)據(jù)庫,與用戶輸入對(duì)比:

通過getValue()的方法獲取用戶的輸入內(nèi)容,然后連接數(shù)據(jù)庫經(jīng)行查找和比較;

#定義一個(gè)消息彈出框的函數(shù)
 def show_message(self,word=""):
  dlg = wx.MessageDialog(None, word, u"錯(cuò)誤", wx.YES_NO | wx.ICON_QUESTION)

  if dlg.ShowModal() == wx.ID_YES:
   #self.Close(True)
   pass
  dlg.Destroy()


 def on_but_login(self,event):
  #連接到本地?cái)?shù)據(jù)庫

  user_name = self.entry_user.GetValue()
  pass_word= self.entry_pass.GetValue()

  sql = """select pass from student where name ='%s' """ % (user_name)
  #判斷,查看用戶名和密碼名是否為空
  #不為空之后在進(jìn)行查詢和判斷
  #不然當(dāng)密碼或用戶名為空時(shí)會(huì)出現(xiàn)會(huì)導(dǎo)致出錯(cuò)
  if user_name and pass_word:
   db = pymysql.connect(host="localhost", user="root",
   password="zhang123", db="user", port=3306)
   # 使用cursor()方法獲取操作游標(biāo)
   cur = db.cursor()
   try:

    cur.execute(sql) # 執(zhí)行sql語句

    results = cur.fetchall() # 獲取查詢的所有記錄
    #返回值是一個(gè)元組的形式
    #print(type(results))
    if results:
     #print(type(results[0][0]))
     #print(results[0][0])
     if results[0][0] == pass_word:
      #表示登陸成功,后續(xù)可以寫登陸成功后的界面
      #此處就不再寫
      pass
      #print("sucessful")

     else:
      self.show_message(word="密碼錯(cuò)誤")


    else:
     self.show_message(word='用戶名不存在')

   except Exception as e:
    db.rollback()


   finally:

    db.close() # 關(guān)閉連接
  else:
   self.show_message(word='賬號(hào)和密碼不能為空')

總之,由于本人對(duì)布局掌握的不是很好,用的時(shí)固定坐標(biāo)的方法,導(dǎo)致當(dāng)窗口進(jìn)行拉升的時(shí)候效果不是很好:

案例的整體源代碼:

大家只要將需要加載的圖片資源和代碼放在同一個(gè)文件下就可以運(yùn)行了:

import wx
import pymysql
#由于當(dāng)前對(duì)布局管理器不是很熟悉,所系使用的是固定位置,導(dǎo)致窗口拉伸的效果不是很好
class MyApp(wx.App):
 def __init__(self):
  wx.App.__init__(self)
  frame = wx.Frame(parent=None,title='Login',size=(532,420))
  #設(shè)置窗口的左上角的圖標(biāo)
  #其中參數(shù)type表示圖片的類型,還有ico,jpgm等類型
  icon_1 = wx.Icon(name='python1.png',type=wx.BITMAP_TYPE_PNG)
  frame.SetIcon(icon_1)

  panel = wx.Panel(frame,-1)
  # 向panel中添加圖片
  image =wx.Image("python2.jpg", wx.BITMAP_TYPE_JPEG).ConvertToBitmap()
  wx.StaticBitmap(panel, -1, bitmap=image, pos=(0, 0))

  #添加靜態(tài)標(biāo)簽
  label_user = wx.StaticText(panel,-1,"賬號(hào):", pos=(80,200))
  label_pass = wx.StaticText(panel,-1,"密碼:", pos=(80,240))
  #添加文本輸入框
  self.entry_user = wx.TextCtrl(panel,-1,size=(200,30), pos=(130,200))
  #style 為設(shè)置輸入
  self.entry_pass = wx.TextCtrl(panel,-1, size=(200,30), pos=(130,240), style=wx.TE_PASSWORD)
  #添加按鈕
  self.but_login = wx.Button(panel,-1,"登陸", size=(120,50), pos=(120,300))
  self.but_register = wx.Button(panel,-1,"注冊(cè)", size=(120,50), pos=(260,300))
  #設(shè)置按鈕的顏色
  self.but_login.SetBackgroundColour("#0a74f7")
  self.but_register.SetBackgroundColour("#282c34")
  #給按鈕綁定事件
  self.Bind(wx.EVT_BUTTON,self.on_but_login,self.but_login)
  self.Bind(wx.EVT_BUTTON,self.on_but_register,self.but_register)
  #
  frame.Center()
  frame.Show(True)

 #定義一個(gè)消息彈出框的函數(shù)
 def show_message(self,word=""):
  dlg = wx.MessageDialog(None, word, u"錯(cuò)誤", wx.YES_NO | wx.ICON_QUESTION)

  if dlg.ShowModal() == wx.ID_YES:
   #self.Close(True)
   pass
  dlg.Destroy()


 def on_but_login(self,event):
  #連接到本地?cái)?shù)據(jù)庫

  user_name = self.entry_user.GetValue()
  pass_word= self.entry_pass.GetValue()

  sql = """select pass from student where name ='%s' """ % (user_name)
  #判斷,查看用戶名和密碼名是否為空
  #不為空之后在進(jìn)行查詢和判斷
  #不然當(dāng)密碼或用戶名為空時(shí)會(huì)出現(xiàn)會(huì)導(dǎo)致出錯(cuò)
  if user_name and pass_word:
   db = pymysql.connect(host="localhost", user="root",
   password="zhang123", db="user", port=3306)
   # 使用cursor()方法獲取操作游標(biāo)
   cur = db.cursor()
   try:

    cur.execute(sql) # 執(zhí)行sql語句

    results = cur.fetchall() # 獲取查詢的所有記錄
    #返回值是一個(gè)元組的形式
    #print(type(results))
    if results:
     #print(type(results[0][0]))
     #print(results[0][0])
     if results[0][0] == pass_word:
      #表示登陸成功,后續(xù)可以寫登陸成功后的界面
      #此處就不再寫
      pass
      #print("sucessful")

     else:
      self.show_message(word="密碼錯(cuò)誤")


    else:
     self.show_message(word='用戶名不存在')

   except Exception as e:
    db.rollback()


   finally:

    db.close() # 關(guān)閉連接
  else:
   self.show_message(word='賬號(hào)和密碼不能為空')

 def on_but_register(self,event):
  #類似上上面的查詢,只需獲取相關(guān)內(nèi)容插入到數(shù)據(jù)庫就可以做出相關(guān)的操作
  #內(nèi)容與上面內(nèi)容相似,不再經(jīng)行書寫
  pass


if __name__=='__main__':
 app = MyApp()
 app.MainLoop()

總結(jié):

這是我的第一篇博客,寫的不好請(qǐng)大家見諒,也歡迎大家和我一起來探討python或其他的話題,也歡迎大家給我指出問題。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

河北区| 防城港市| 木里| 富民县| 中宁县| 永和县| 阿坝县| 盐亭县| 仪征市| 临夏市| 乌兰察布市| 温泉县| 双鸭山市| 胶州市| 文化| 洛宁县| 凭祥市| 永登县| 银川市| 霍林郭勒市| 麻阳| 昔阳县| 珲春市| 南城县| 城固县| 平顺县| 黔南| 富川| 金昌市| 吴堡县| 崇文区| 洛浦县| 望谟县| 陵川县| 榆林市| 土默特左旗| 滨海县| 景宁| 郴州市| 江阴市| 达日县|