對於初次做gui程式的人來說,確實登陸視窗程式會造成困惑,以前做delphi時也有人問過我,好不容易人家才理解清楚,pyqt也是一樣的。
一般有兩種處理方式:
第一種:在開啟主窗體前開啟登陸對話方塊,如果登陸成功,再建立主窗體並開啟;
第二種:在建立主窗體後,在顯示主窗體前開啟登陸對話方塊,如果登陸成功,顯示主窗體,如果失敗,不顯示主窗體,並退出程式。
我推薦第一種方式,邏輯清晰,並且如果登陸不成功,那麼不需要建立主窗體。
先放開登陸對話方塊不管,最簡單的來理解,那麼可以我們可以把登陸這個行為理解為乙個方法,如果這個方法成功,那麼就建立並顯示主窗體。說白了和確認對話方塊一樣的 ,確認對話方塊並不需要你來處理如何建立並開啟會對話方塊,你只要呼叫這個方法即可,系統會幫你開啟對話方塊。
那麼來看**:
from pyqt4 import qtgui, qtcore
def login():
return true
if __name__ == '__main__':
import sys
if login():
win = qtgui.qmainwindow()
win.show()
這段**應該很好理解,這裡定義了這個login方法,你可以試著把返回值設成false,這樣主窗體就不會顯示了,說明可以達到你的要求了。這裡把複雜性都隱 藏到login方法裡了,把開啟對話方塊的**就寫在這個方法裡面。
# 建立乙個login對話方塊:
class logindialog(qtgui.qdialog):
def __init__(self, parent=none):
qtgui.qdialog.__init__(self, parent)
self.user = qtgui.qlineedit(self)
self.user.move(10, 20)
self.user.settext('admin')
self.pwd = qtgui.qlineedit(self)
self.pwd.move(10, 60)
self.pwd.settext('admin')
self.pwd.setechomode(qtgui.qlineedit.password)
loginbtn = qtgui.qpushbutton('login', self)
loginbtn.move(100, 90)
loginbtn.clicked.connect(self.login) # 繫結方法判斷使用者名稱和密碼
def login(self):
if unicode(self.user.text()) == u'admin' and
unicode(self.pwd.text()) == u'admin':
# 如果使用者名稱和密碼正確,關閉對話方塊,accept()關閉後,如果增加乙個取消按鈕呼叫reject()
self.accept()
else:
qtgui.qmessagebox.critical(self, 'error', 'user name or
password error')
# login方法更改如下:
def login():
dialog = logindialog()
if dialog.exec_():
return true
return false
# 當然如果你嫌login方法這樣寫囉嗦,那麼可以直接這樣寫:
if __name__ == '__main__':
import sys
dialog = logindialog()
if dialog.exec_():
win = qtgui.qmainwindow()
win.show()
[python]view plain
copy
print?
from pyqt4 import qtgui
class logindialog(qtgui.qdialog):
def __init__(self, parent=none):
qtgui.qdialog.__init__(self, parent)
self.setwindowtitle('login')
self.user = qtgui.qlineedit(self)
self.user.move(10, 20)
self.user.settext('admin')
self.pwd = qtgui.qlineedit(self)
self.pwd.move(10, 60)
self.pwd.settext('admin')
self.pwd.setechomode(qtgui.qlineedit.password)
self.loginbtn = qtgui.qpushbutton('login', self)
self.loginbtn.move(100, 90)
self.loginbtn.clicked.connect(self.login) # 繫結方法判斷使用者名稱和密碼
def login(self):
ifself.user.text() == 'admin'
andself.pwd.text() == 'admin':
# 如果使用者名稱和密碼正確,關閉對話方塊,accept()關閉後,如果增加乙個取消按鈕呼叫reject()
self.accept()
else:
qtgui.qmessagebox.critical(self, 'error', 'user name or password error')
if __name__ == '__main__':
import sys
dialog = logindialog()
if dialog.exec_():
win = qtgui.qmainwindow()
win.setwindowtitle('mainwindow')
win.show()
PyQt5 登陸介面
self.setwindowtitle 登陸介面 self.setwindowicon qicon d ico ooopic 1552382147.ico self.resize 500,200 self.password 12345678 self.username kaixinde101 sel...
C 登陸介面
在c 中從登陸介面進入主介面,進入主介面以後怎麼關閉登陸介面 有很多方法,我就說兩種 方法一 在登入介面的登入按鈕的單擊事件下,寫 這種情況其實把主介面看作登入介面的子窗體。只是把登入介面隱藏,它還存在於記憶體中,不過一般登入介面很小,不佔多少資源,也無所謂。private void btnlogi...
WPF 登陸介面
效果圖 黑色是我的桌面 圓角登入框 以下基於wpf。一開始最先要的效果就是圓角窗體,單純出於美觀的心態,但是人是不滿足的,改了一點就像再有一點。哈哈哈 更改預設 其實就是將原有的窗體變隱藏,然後搞乙個新的出來。windowstyle none allowstransparency true back...