91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在wxpython中使用pymysql實現一個用戶登陸功能

發布時間:2021-04-17 16:50:33 來源:億速云 閱讀:100 作者:Leah 欄目:開發技術

怎么在wxpython中使用pymysql實現一個用戶登陸功能?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

#設置窗口的左上角的圖標
#其中參數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))

給登陸按鈕設計點擊函數:
本次沒有使用圖片按鈕,只是簡單的按鈕插件,所以看起來比較丑

#添加按鈕,pos參數為其位置
  self.but_login = wx.Button(panel,-1,"登陸", size=(120,50), pos=(120,300))
  self.but_register = wx.Button(panel,-1,"注冊", size=(120,50), pos=(260,300))
  #設置按鈕的顏色
  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)

如果要設計圖片按鈕可以這樣實現:

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

效果如下:

怎么在wxpython中使用pymysql實現一個用戶登陸功能

pymysql連接本地數據庫,與用戶輸入對比:

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

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

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


 def on_but_login(self,event):
  #連接到本地數據庫

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

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

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

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

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


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

   except Exception as e:
    db.rollback()


   finally:

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

總之,由于本人對布局掌握的不是很好,用的時固定坐標的方法,導致當窗口進行拉升的時候效果不是很好:

怎么在wxpython中使用pymysql實現一個用戶登陸功能

案例的整體源代碼:

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

import wx
import pymysql
#由于當前對布局管理器不是很熟悉,所系使用的是固定位置,導致窗口拉伸的效果不是很好
class MyApp(wx.App):
 def __init__(self):
  wx.App.__init__(self)
  frame = wx.Frame(parent=None,title='Login',size=(532,420))
  #設置窗口的左上角的圖標
  #其中參數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))

  #添加靜態標簽
  label_user = wx.StaticText(panel,-1,"賬號:", 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 為設置輸入
  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,"注冊", size=(120,50), pos=(260,300))
  #設置按鈕的顏色
  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)

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

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


 def on_but_login(self,event):
  #連接到本地數據庫

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

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

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

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

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


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

   except Exception as e:
    db.rollback()


   finally:

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




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


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

看完上述內容,你們掌握怎么在wxpython中使用pymysql實現一個用戶登陸功能的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南投市| 荆州市| 营山县| 商水县| 灵武市| 额尔古纳市| 锡林郭勒盟| 宁津县| 深圳市| 靖边县| 漾濞| 彭山县| 航空| 资兴市| 凌源市| 酉阳| 嘉鱼县| 哈尔滨市| 广丰县| 岳西县| 杭锦旗| 定安县| 台东市| 灵山县| 望谟县| 嘉祥县| 衢州市| 马龙县| 靖安县| 葵青区| 武乡县| 新巴尔虎右旗| 洛川县| 延津县| 景泰县| 巢湖市| 昌黎县| 岳普湖县| 大荔县| 宜州市| 仪陇县|