pos機(jī)如何登錄

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

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

本文目錄一覽:

1、pos機(jī)如何登錄

pos機(jī)如何登錄

實(shí)戰(zhàn)wxPython系列-049

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

下面我們將實(shí)現(xiàn)一個登錄窗口,它具有以下功能:

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

在本文中我們將演示如何使用絕對布局方式和wxPython中的布局調(diào)節(jié)器Sizer來實(shí)現(xiàn)登錄窗口的布局。

一、使用絕對位置實(shí)現(xiàn)布局

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

import wxclass DialogLogin(wx.Dialog): def __Init__(self, *args, **kw): super(DialogLogin, self).__init__(*args, **kw) self.InitUi() def InitUi(self): self.SetTitle("實(shí)戰(zhàn)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) #退出應(yīng)用 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("三次錯誤輸入,應(yīng)用退出", "提示信息", wx.OK|wx.ICON_INFORMATION) #退出應(yīng)用 self.Destroy() elif self.inputCount == 2: wx.MessageBox("輸入錯誤,還有一次機(jī)會", "提示信息", wx.OK|wx.ICON_INFORMATION) elif self.inputCount == 1: wx.MessageBox("輸入錯誤,還有二次機(jī)會", "提示信息", wx.OK|wx.ICON_INFORMATION)def main(): app = wx.App() sample = DialogLogin(None) sample.Show() app.MainLoop()if __name__ == "__main__": main()

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

在代碼中,我們綁定了窗口的關(guān)閉事件

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

當(dāng)我們點(diǎn)擊窗口上的” X”按鈕時,將觸發(fā)這個事件,執(zhí)行OnClose中的代碼

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

關(guān)閉對話框。

圖1:采用絕對布局實(shí)現(xiàn)的登錄窗口

當(dāng)輸入的用戶名為"Admin"和密碼都為"Admin",顯示登錄成功對話框,點(diǎn)擊確定后,將退出應(yīng)用。

二、使用Sizer實(shí)現(xiàn)布局

使用各種Sizer調(diào)節(jié)器來實(shí)現(xiàn)布局的一個重要優(yōu)點(diǎn)就是,當(dāng)窗口的大小發(fā)生變化時,窗口內(nèi)的控件會根據(jù)父窗口的變化來調(diào)整自身相對于父窗口的位置,這樣,最終窗口的顯示效果相對于絕對布局來說,會更協(xié)調(diào)和美觀。

import wxclass DialogLogin(wx.Dialog): def __init__(self, *args, **kw): super(DialogLogin, self).__init__(*args, **kw) self.InitUi() def InitUi(self): self.SetTitle("實(shí)戰(zhàn)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) #退出應(yīng)用 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("三次錯誤輸入,應(yīng)用退出", "提示信息", wx.OK|wx.ICON_INFORMATION) #退出應(yīng)用 self.Destroy() elif self.inputCount == 2: wx.MessageBox("輸入錯誤,還有一次機(jī)會", "提示信息", wx.OK|wx.ICON_INFORMATION) elif self.inputCount == 1: wx.MessageBox("輸入錯誤,還有二次機(jī)會", "提示信息", wx.OK|wx.ICON_INFORMATION)def main(): app = wx.App() sample = DialogLogin(None) sample.Show() app.MainLoop()if __name__ == "__main__": main()

在上面的代碼中,我們使用Sizer調(diào)節(jié)器來實(shí)現(xiàn)登錄窗口的布局:

mainSizer = wx.BoxSizer(wx.VERTICAL)

首先我們創(chuàng)建一個垂直布局的調(diào)節(jié)器mainSizer作為我們的主調(diào)節(jié)器

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

然后我們添加”用戶登錄”的靜態(tài)文本提示信息,將其添加到 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調(diào)節(jié)器來完成對它們的布局。并將其添加到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)創(chuàng)建一個水平布局btnSizer, 將“登錄”和“取消”按鈕放入其中。mainSizer.Add((-1, 40))

在主調(diào)節(jié)器中添加垂直方向40像素的間隔。

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

將btnSizer添加到主調(diào)節(jié)器mainSizer,完成整個布局。

圖2:采用Sizer調(diào)節(jié)器實(shí)現(xiàn)的登錄窗口

當(dāng)輸入的用戶名為"Admin"和密碼都為"Admin",顯示登錄成功對話框,點(diǎn)擊確定后,將退出應(yīng)用。

三、本文知識點(diǎn)

熟悉絕對布局和相對布局。運(yùn)用wxPyhton中的控件實(shí)現(xiàn)一個布局。熟悉wx.Dialog的使用方法。熟悉各種Sizer調(diào)節(jié)器的使用方法。熟悉wx.MessageBox的使用方法。

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

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

轉(zhuǎn)發(fā)請帶上網(wǎng)址:http://www.www690aa.com/newsone/83614.html

你可能會喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 babsan@163.com 舉報,一經(jīng)查實(shí),本站將立刻刪除。