pos機如何登錄

 新聞資訊2  |   2023-07-12 09:46  |  投稿人:pos機之家

網上有很多關于pos機如何登錄,wxPython 的知識,也有很多人為大家解答關于pos機如何登錄的問題,今天pos機之家(www.www690aa.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、pos機如何登錄

pos機如何登錄

實戰wxPython系列-049

在很多GUI程序中,常常在應用啟動開始的時候,需要一個用戶登錄對話框,在那里用戶必須輸入用戶名和密碼, 如果密碼和用戶名正確,那么程序就繼續加載,顯示程序的主界面。

下面我們將實現一個登錄窗口,它具有以下功能:

輸入用戶名及密碼。登錄,如果用戶名和密碼成功匹配,則顯示登錄成功信息, 如果登錄失敗,則清除輸入的信息,提示重新輸入。一共有三次輸入機會,如果三次都出錯,則直接退出應用。

在本文中我們將演示如何使用絕對布局方式和wxPython中的布局調節器Sizer來實現登錄窗口的布局。

一、使用絕對位置實現布局

所謂絕對布局,就是在面板Panel上指定每個控件的絕對像素位置,指定該位置后,控件不會隨窗口的大小變化而調整其位置。

import wxclass DialogLogin(wx.Dialog): def __Init__(self, *args, **kw): super(DialogLogin, self).__init__(*args, **kw) self.InitUi() def InitUi(self): self.SetTitle("實戰wxPython: 登錄對話框演示") self.SetSize(400, 280) self.Bind(wx.EVT_CLOSE, self.OnClose) panel = wx.Panel(self) wx.StaticText(panel, wx.ID_ANY, "用戶登錄", pos = (160, 40)) wx.StaticText(panel, wx.ID_ANY, "用戶名:", pos = (80, 80), size=(40, 24)) self.txtUsername = wx.TextCtrl(panel, wx.ID_ANY, pos = (140, 80), size=(160, 24)) wx.StaticText(panel, wx.ID_ANY, "密碼:" , pos = (80, 120), size=(40, 24)) self.txtPassword = wx.TextCtrl(panel, wx.ID_ANY, pos = (140, 120), size=(160, 24), style = wx.TE_PASSWORD) btnLogin = wx.Button(panel, wx.ID_ANY, "登錄", pos = (100, 180), size = (80, 24)) btnLogin.Bind(wx.EVT_BUTTON, self.OnLogin) btnCancel = wx.Button(panel, wx.ID_ANY, "取消", pos = (200, 180), size = (80, 24)) btnCancel.Bind(wx.EVT_BUTTON, self.OnCancel) self.inputCount = 0 self.Centre() def OnClose(self, e): print("Destroy dialog\") self.Destroy() def OnLogin(self, e): if self.txtUsername.GetValue() != "Admin": wx.MessageBox("用戶名錯誤", "提示信息", wx.OK|wx.ICON_INFORMATION) self.CheckInput() elif self.txtPassword.GetValue() != "Admin": wx.MessageBox("密碼錯誤", "提示信息", wx.OK|wx.ICON_INFORMATION) self.CheckInput() else: wx.MessageBox("登錄成功", "提示信息", wx.OK|wx.ICON_INFORMATION) #退出應用 self.Destroy(); def OnCancel(self, e): self.inputCount = 0; self.txtUsername.Clear() self.txtPassword.Clear() self.txtUsername.SetFocus() def CheckInput(self): self.inputCount += 1 if self.inputCount == 3: wx.MessageBox("三次錯誤輸入,應用退出", "提示信息", wx.OK|wx.ICON_INFORMATION) #退出應用 self.Destroy() elif self.inputCount == 2: wx.MessageBox("輸入錯誤,還有一次機會", "提示信息", wx.OK|wx.ICON_INFORMATION) elif self.inputCount == 1: wx.MessageBox("輸入錯誤,還有二次機會", "提示信息", wx.OK|wx.ICON_INFORMATION)def main(): app = wx.App() sample = DialogLogin(None) sample.Show() app.MainLoop()if __name__ == "__main__": main()

上面的代碼演示了如何使用絕對布局方式來實現一個登錄窗口,從代碼中可以看到,我們創建的每一個子控件,都指定相對于父窗口 panel的絕對像素位置。

在代碼中,我們綁定了窗口的關閉事件

self.Bind(wx.EVT_CLOSE, self.OnClose)

當我們點擊窗口上的” X”按鈕時,將觸發這個事件,執行OnClose中的代碼

def OnClose(self, e): print("Destroy dialog\") self.Destroy()

關閉對話框。

圖1:采用絕對布局實現的登錄窗口

當輸入的用戶名為"Admin"和密碼都為"Admin",顯示登錄成功對話框,點擊確定后,將退出應用。

二、使用Sizer實現布局

使用各種Sizer調節器來實現布局的一個重要優點就是,當窗口的大小發生變化時,窗口內的控件會根據父窗口的變化來調整自身相對于父窗口的位置,這樣,最終窗口的顯示效果相對于絕對布局來說,會更協調和美觀。

import wxclass DialogLogin(wx.Dialog): def __init__(self, *args, **kw): super(DialogLogin, self).__init__(*args, **kw) self.InitUi() def InitUi(self): self.SetTitle("實戰wxPython: 登錄對話框演示") self.SetSize(400, 280) self.Bind(wx.EVT_CLOSE, self.OnClose) panel = wx.Panel(self) mainSizer = wx.BoxSizer(wx.VERTICAL) # 頂部的提示信息 txtLogin = wx.StaticText(panel, wx.ID_ANY, "用戶登錄") mainSizer.Add(txtLogin, 0, wx.ALL|wx.CENTER, 20) # 用戶名和密碼 titleUsername = wx.StaticText(panel, wx.ID_ANY, "用戶名:") titlePassword = wx.StaticText(panel, wx.ID_ANY, "密碼:") self.textUsername = wx.TextCtrl(panel, wx.ID_ANY, size=(160,24)); self.textPassword = wx.TextCtrl(panel, wx.ID_ANY, size=(160,24), style = wx.TE_PASSWORD) fgs = wx.FlexGridSizer(2, 2, 20, 20) fgs.AddMany([(titleUsername), (self.textUsername, 1, wx.EXPAND), (titlePassword), (self.textPassword, 1, wx.EXPAND)]) fgs.AddGrowableRow(1,1) fgs.AddGrowableCol(1, 1) mainSizer.Add(fgs, proportion=0, flag=wx.CENTER, border=40) btnSizer = wx.BoxSizer(wx.HORIZONTAL) btnLogin = wx.Button(panel, wx.ID_ANY, "登錄", size = (80, 24)) btnLogin.Bind(wx.EVT_BUTTON, self.OnLogin) btnCancel = wx.Button(panel, wx.ID_ANY, "取消", size = (80, 24)) btnCancel.Bind(wx.EVT_BUTTON, self.OnCancel) btnSizer.Add(btnLogin) btnSizer.Add(btnCancel, flag=wx.LEFT, border=40) mainSizer.Add((-1, 40)) mainSizer.Add(btnSizer, 1, wx.CENTER, border = 20) panel.SetSizer(mainSizer) self.inputCount = 0 self.Centre() def OnClose(self, e): print("Destroy dialog\") self.Destroy() def OnLogin(self, e): if self.textUsername.GetValue() != "Admin": wx.MessageBox("用戶名錯誤", "提示信息", wx.OK|wx.ICON_INFORMATION) self.CheckInput() elif self.textPassword.GetValue() != "Admin": wx.MessageBox("密碼錯誤", "提示信息", wx.OK|wx.ICON_INFORMATION) self.CheckInput() else: wx.MessageBox("登錄成功", "提示信息", wx.OK|wx.ICON_INFORMATION) #退出應用 self.Destroy(); def OnCancel(self, e): self.inputCount = 0; self.textUsername.Clear() self.textPassword.Clear() self.textUsername.SetFocus() def CheckInput(self): self.inputCount += 1 if self.inputCount == 3: wx.MessageBox("三次錯誤輸入,應用退出", "提示信息", wx.OK|wx.ICON_INFORMATION) #退出應用 self.Destroy() elif self.inputCount == 2: wx.MessageBox("輸入錯誤,還有一次機會", "提示信息", wx.OK|wx.ICON_INFORMATION) elif self.inputCount == 1: wx.MessageBox("輸入錯誤,還有二次機會", "提示信息", wx.OK|wx.ICON_INFORMATION)def main(): app = wx.App() sample = DialogLogin(None) sample.Show() app.MainLoop()if __name__ == "__main__": main()

在上面的代碼中,我們使用Sizer調節器來實現登錄窗口的布局:

mainSizer = wx.BoxSizer(wx.VERTICAL)

首先我們創建一個垂直布局的調節器mainSizer作為我們的主調節器

txtLogin = wx.StaticText(panel, wx.ID_ANY, "用戶登錄")mainSizer.Add(txtLogin, 0, wx.ALL|wx.CENTER, 20)

然后我們添加”用戶登錄”的靜態文本提示信息,將其添加到 mainSizer中,并水平居中。

titleUsername = wx.StaticText(panel, wx.ID_ANY, "用戶名:")titlePassword = wx.StaticText(panel, wx.ID_ANY, "密碼:")self.textUsername = wx.TextCtrl(panel, wx.ID_ANY, size=(160,24)); self.textPassword = wx.TextCtrl(panel, wx.ID_ANY, size=(160,24), style = wx.TE_PASSWORD) fgs = wx.FlexGridSizer(2, 2, 20, 20) fgs.AddMany([(titleUsername), (self.textUsername, 1, wx.EXPAND), (titlePassword), (self.textPassword, 1, wx.EXPAND)]) fgs.AddGrowableRow(1,1)fgs.AddGrowableCol(1, 1) mainSizer.Add(fgs, proportion=0, flag=wx.CENTER, border=40)

然后,我們生成用戶名和密碼輸入解碼,使用一個wx.FlexGridSizer調節器來完成對它們的布局。并將其添加到mainSizer中。

btnSizer = wx.BoxSizer(wx.HORIZONTAL)btnLogin = wx.Button(panel, wx.ID_ANY, "登錄", size = (80, 24)) btnLogin.Bind(wx.EVT_BUTTON, self.OnLogin) btnCancel = wx.Button(panel, wx.ID_ANY, "取消", size = (80, 24)) btnCancel.Bind(wx.EVT_BUTTON, self.OnCancel) btnSizer.Add(btnLogin) btnSizer.Add(btnCancel, flag=wx.LEFT, border=40)創建一個水平布局btnSizer, 將“登錄”和“取消”按鈕放入其中。mainSizer.Add((-1, 40))

在主調節器中添加垂直方向40像素的間隔。

mainSizer.Add(btnSizer, 1, wx.CENTER, border = 20)

將btnSizer添加到主調節器mainSizer,完成整個布局。

圖2:采用Sizer調節器實現的登錄窗口

當輸入的用戶名為"Admin"和密碼都為"Admin",顯示登錄成功對話框,點擊確定后,將退出應用。

三、本文知識點

熟悉絕對布局和相對布局。運用wxPyhton中的控件實現一個布局。熟悉wx.Dialog的使用方法。熟悉各種Sizer調節器的使用方法。熟悉wx.MessageBox的使用方法。

前一篇:wxPython - Book控件(第二部分)

以上就是關于pos機如何登錄,wxPython 的知識,后面我們會繼續為大家整理關于pos機如何登錄的知識,希望能夠幫助到大家!

轉發請帶上網址:http://www.www690aa.com/newsone/83614.html
上一篇:pos機如何刷10元 下一篇:pos機回收照片

你可能會喜歡:

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。