2017-03-01 2 views
0

現在、SQLiteデータベースを使用して、ユーザーが自分のGUIアプリケーションにログインするようにしています。私が思っていた、しかしPYQT4:デスクトップアプリケーションのWindowsユーザー名とパスワードの使用

# -*- coding: utf-8 -*- 

# Form implementation generated from reading ui file 'InfectionControlLogin.ui' 
# 
# Created by: PyQt4 UI code generator 4.11.4 
# 
# WARNING! All changes made in this file will be lost! 

from PyQt4 import QtCore, QtGui 
import sqlite3 
import LoginIC_rc 
import sys 
import time 
import os.path as osp 
import ctypes 
from ctypes import wintypes 
import os 


try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    def _fromUtf8(s): 
     return s 

try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 


    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig) 


#setting the path variable for icon 
path = osp.join(osp.dirname(sys.modules[__name__].__file__), 'I:\\Infection Control System Database\images\Malware-icon.png') 
myappid = 'I:\\Infection Control System Database\images\Malware-icon.png' # arbitrary string 
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid) 
lpBuffer = wintypes.LPWSTR() 
AppUserModelID = ctypes.windll.shell32.GetCurrentProcessExplicitAppUserModelID 
AppUserModelID(ctypes.cast(ctypes.byref(lpBuffer), wintypes.LPWSTR)) 
appid = lpBuffer.value 
ctypes.windll.kernel32.LocalFree(lpBuffer) 
if appid is not None: 
    print(appid) 
class Ui_Dialog(object): 

    def signUpShow(self): 
     self.signUpWindow = QtGui.QDialog() 
     self.ui = Ui_signUp() 
     self.ui.setupUi(self.signUpWindow) 
     self.signUpWindow.show() 

class Ui_Dialog(object): 
    def setupUi(self, Dialog): 
     Dialog.setWindowFlags(QtCore.Qt.WindowCloseButtonHint) 
     Dialog.setObjectName(_fromUtf8("Dialog")) 
     Dialog.resize(443, 383) 
     Dialog.setMinimumSize(QtCore.QSize(443, 383)) 
     Dialog.setMaximumSize(QtCore.QSize(443, 383)) 
     icon = QtGui.QIcon() 
     icon.addPixmap(QtGui.QPixmap(_fromUtf8("I:\Infection Control System Database\Program Files\images\ICDatabaseImage.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) 
     Dialog.setWindowIcon(icon) 
     Dialog.setStyleSheet(_fromUtf8("")) 
     Dialog.setModal(False) 
     self.groupLogin = QtGui.QGroupBox(Dialog) 
     self.groupLogin.setGeometry(QtCore.QRect(210, 180, 221, 171)) 
     font = QtGui.QFont() 
     font.setFamily(_fromUtf8("Times New Roman")) 
     font.setPointSize(14) 
     self.groupLogin.setFont(font) 
     self.groupLogin.setStyleSheet(_fromUtf8("color: rgb(4, 4, 4);\n" 
"alternate-background-color: rgb(255, 255, 255);")) 
     self.groupLogin.setAlignment(QtCore.Qt.AlignCenter) 
     self.groupLogin.setFlat(False) 
     self.groupLogin.setObjectName(_fromUtf8("groupLogin")) 
     self.btnLogin = QtGui.QPushButton(self.groupLogin) 
     self.btnLogin.setGeometry(QtCore.QRect(20, 130, 81, 31)) 
     font = QtGui.QFont() 
     font.setPointSize(10) 
     self.btnLogin.setFont(font) 
     self.btnLogin.setStatusTip(_fromUtf8("")) 
     self.btnLogin.setWhatsThis(_fromUtf8("")) 
     icon1 = QtGui.QIcon() 
     icon1.addPixmap(QtGui.QPixmap(_fromUtf8(":/icimages/Check.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) 
     self.btnLogin.setIcon(icon1) 
     self.btnLogin.setIconSize(QtCore.QSize(20, 20)) 
     self.btnLogin.setAutoDefault(True) 
     self.btnLogin.setDefault(True) 
     self.btnLogin.setObjectName(_fromUtf8("btnLogin")) 
     self.lineEdit_Password = QtGui.QLineEdit(self.groupLogin) 
     self.lineEdit_Password.setGeometry(QtCore.QRect(10, 90, 201, 31)) 
     font = QtGui.QFont() 
     font.setFamily(_fromUtf8("Times New Roman")) 
     font.setPointSize(10) 
     self.lineEdit_Password.setFont(font) 
     self.lineEdit_Password.setStatusTip(_fromUtf8("")) 
     self.lineEdit_Password.setMaxLength(25) 
     self.lineEdit_Password.setEchoMode(QtGui.QLineEdit.Password) 
     self.lineEdit_Password.setProperty("clearButtonEnabled", True) 
     self.lineEdit_Password.setObjectName(_fromUtf8("lineEdit_Password")) 
     self.lineEdit_Username = QtGui.QLineEdit(self.groupLogin) 
     self.lineEdit_Username.setGeometry(QtCore.QRect(10, 40, 201, 31)) 
     font = QtGui.QFont() 
     font.setFamily(_fromUtf8("Times New Roman")) 
     font.setPointSize(10) 
     self.lineEdit_Username.setFont(font) 
     self.lineEdit_Username.setStatusTip(_fromUtf8("")) 
     self.lineEdit_Username.setWhatsThis(_fromUtf8("")) 
     #self.lineEdit_Username.setAccessibleName(_fromUtf8("")) 
     self.lineEdit_Username.setMaxLength(20) 
     self.lineEdit_Username.setProperty("clearButtonEnabled", True) 
     self.lineEdit_Username.setObjectName(_fromUtf8("lineEdit_Username")) 
     self.btnCancel = QtGui.QPushButton(self.groupLogin) 
     self.btnCancel.setGeometry(QtCore.QRect(120, 130, 81, 31)) 
     font = QtGui.QFont() 
     font.setPointSize(10) 
     font.setBold(False) 
     font.setWeight(50) 
     font.setStrikeOut(False) 
     font.setKerning(True) 
     self.btnCancel.setFont(font) 
     self.btnCancel.setFocusPolicy(QtCore.Qt.StrongFocus) 
     self.btnCancel.setLayoutDirection(QtCore.Qt.LeftToRight) 
     self.btnCancel.setAutoFillBackground(True) 
     icon2 = QtGui.QIcon() 
     icon2.addPixmap(QtGui.QPixmap(_fromUtf8(":/icimages/Cancel.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) 
     self.btnCancel.setIcon(icon2) 
     self.btnCancel.setIconSize(QtCore.QSize(15, 15)) 
     self.btnCancel.setFlat(False) 
     self.btnCancel.setObjectName(_fromUtf8("btnCancel")) 
     self.lblUsername = QtGui.QLabel(self.groupLogin) 
     self.lblUsername.setGeometry(QtCore.QRect(10, 20, 61, 16)) 
     font = QtGui.QFont() 
     font.setUnderline(True) 
     self.lblUsername.setFont(font) 
     self.lblUsername.setObjectName(_fromUtf8("lblUsername")) 
     self.lblPassword = QtGui.QLabel(self.groupLogin) 
     self.lblPassword.setGeometry(QtCore.QRect(10, 70, 61, 16)) 
     font = QtGui.QFont() 
     font.setUnderline(True) 
     self.lblPassword.setFont(font) 
     self.lblPassword.setObjectName(_fromUtf8("lblPassword")) 
     self.toolButton = QtGui.QToolButton(self.groupLogin) 
     self.toolButton.setGeometry(QtCore.QRect(182, 91, 28, 28)) 
     self.toolButton.setAutoFillBackground(False) 
     self.toolButton.setText(_fromUtf8("")) 
     icon3 = QtGui.QIcon() 
     icon3.addPixmap(QtGui.QPixmap(_fromUtf8(":/icimages/Lock.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off) 
     self.toolButton.setIcon(icon3) 
     self.toolButton.setIconSize(QtCore.QSize(40, 40)) 
     self.toolButton.setCheckable(False) 
     self.toolButton.setPopupMode(QtGui.QToolButton.InstantPopup) 
     self.toolButton.setAutoRaise(True) 
     self.toolButton.setObjectName(_fromUtf8("toolButton")) 
     self.lblConnectionStatus = QtGui.QLabel(Dialog) 
     self.lblConnectionStatus.setGeometry(QtCore.QRect(140, 360, 131, 21)) 
     font = QtGui.QFont() 
     font.setBold(True) 
     font.setWeight(75) 
     self.lblConnectionStatus.setFont(font) 
     self.lblConnectionStatus.setStatusTip(_fromUtf8("")) 
     self.lblConnectionStatus.setWhatsThis(_fromUtf8("")) 
     self.lblConnectionStatus.setStyleSheet(_fromUtf8("background-color: rgb(226, 226, 226);")) 
     self.lblConnectionStatus.setFrameShape(QtGui.QFrame.StyledPanel) 
     self.lblConnectionStatus.setObjectName(_fromUtf8("lblConnectionStatus")) 
     self.lblWelcome = QtGui.QLabel(Dialog) 
     self.lblWelcome.setGeometry(QtCore.QRect(210, 120, 231, 41)) 
     font = QtGui.QFont() 
     font.setFamily(_fromUtf8("Microsoft Uighur")) 
     font.setPointSize(40) 
     self.lblWelcome.setFont(font) 
     self.lblWelcome.setFrameShape(QtGui.QFrame.NoFrame) 
     self.lblWelcome.setFrameShadow(QtGui.QFrame.Raised) 
     self.lblWelcome.setAlignment(QtCore.Qt.AlignCenter) 
     self.lblWelcome.setObjectName(_fromUtf8("lblWelcome")) 
     self.lblResult = QtGui.QLabel(Dialog) 
     self.lblResult.setGeometry(QtCore.QRect(280, 360, 151, 20)) 
     font = QtGui.QFont() 
     font.setPointSize(10) 
     font.setItalic(True) 
     self.lblResult.setFont(font) 
     self.lblResult.setFrameShape(QtGui.QFrame.StyledPanel) 
     self.lblResult.setFrameShadow(QtGui.QFrame.Raised) 
     self.lblResult.setScaledContents(True) 
     self.lblResult.setAlignment(QtCore.Qt.AlignCenter) 
     self.lblResult.setObjectName(_fromUtf8("lblResult")) 
     self.lbl_InfectionControlApp = QtGui.QLabel(Dialog) 
     self.lbl_InfectionControlApp.setGeometry(QtCore.QRect(190, 150, 271, 31)) 
     font = QtGui.QFont() 
     font.setFamily(_fromUtf8("Script MT Bold")) 
     font.setBold(True) 
     font.setWeight(75) 
     self.lbl_InfectionControlApp.setFont(font) 
     self.lbl_InfectionControlApp.setFrameShape(QtGui.QFrame.NoFrame) 
     self.lbl_InfectionControlApp.setFrameShadow(QtGui.QFrame.Raised) 
     self.lbl_InfectionControlApp.setObjectName(_fromUtf8("lbl_InfectionControlApp")) 
     self.frame = QtGui.QFrame(Dialog) 
     self.frame.setGeometry(QtCore.QRect(-50, -10, 1101, 601)) 
     self.frame.setStyleSheet(_fromUtf8("border-image: url(:/icimages/InfectionControlApp.png);")) 
     self.frame.setFrameShape(QtGui.QFrame.NoFrame) 
     self.frame.setFrameShadow(QtGui.QFrame.Raised) 
     self.frame.setLineWidth(0) 
     self.frame.setObjectName(_fromUtf8("frame")) 
     self.fram_INOVA = QtGui.QFrame(self.frame) 
     self.fram_INOVA.setGeometry(QtCore.QRect(340, 40, 81, 71)) 
     self.fram_INOVA.setStyleSheet(_fromUtf8("border-image: url(:/icimages/INOVA.png);")) 
     self.fram_INOVA.setFrameShape(QtGui.QFrame.NoFrame) 
     self.fram_INOVA.setFrameShadow(QtGui.QFrame.Plain) 
     self.fram_INOVA.setObjectName(_fromUtf8("fram_INOVA")) 
     self.frame.raise_() 
     self.groupLogin.raise_() 
     self.lblConnectionStatus.raise_() 
     self.lblWelcome.raise_() 
     self.lblResult.raise_() 
     self.lbl_InfectionControlApp.raise_() 

     self.retranslateUi(Dialog) 
     QtCore.QMetaObject.connectSlotsByName(Dialog) 
     Dialog.setTabOrder(self.lineEdit_Username, self.lineEdit_Password) 
     Dialog.setTabOrder(self.lineEdit_Password, self.toolButton) 
     Dialog.setTabOrder(self.toolButton, self.btnLogin) 
     Dialog.setTabOrder(self.btnLogin, self.btnCancel) 

     ######################### Button Event ############################## 
     self.btnLogin.clicked.connect(self.loginCheck) 
     ##################################################################### 
     ######################### Button Event ############################## 
     self.btnCancel.clicked.connect(self.fieldsclear) 
     ##################################################################### 
     ######################### Button Event ############################## 
     self.toolButton.pressed.connect(self.text_show) 
     ##################################################################### 
     ######################### Text Event Change ######################### 
     self.lineEdit_Username.textChanged.connect(self.text_changed) 
     ##################################################################### 
     ######################### Password Text Event Change ################ 
     self.toolButton.released.connect(self.text_hide) 
     ##################################################################### 
     ######################### Text Event Change ######################### 
     self.lineEdit_Password.textChanged.connect(self.text_changed_Password) 
     ##################################################################### 

    def retranslateUi(self, Dialog): 
     Dialog.setWindowTitle(_translate("Dialog", "Infection Control Database - Login Page", None)) 
     self.groupLogin.setTitle(_translate("Dialog", "Login", None)) 
     self.btnLogin.setText(_translate("Dialog", "Login", None)) 
     self.btnCancel.setText(_translate("Dialog", "Cancel", None)) 
     self.lblUsername.setText(_translate("Dialog", "Username:", None)) 
     self.lblPassword.setText(_translate("Dialog", "Password:", None)) 
     self.lblConnectionStatus.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:10pt; color:#aa0000;\">Connection Status:</span></p></body></html>", None)) 
     self.lblWelcome.setText(_translate("Dialog", "Welcome!", None)) 
     self.lblResult.setText(_translate("Dialog", "<html><head/><body><p align=\"center\">Status</p></body></html>", None)) 
     self.lbl_InfectionControlApp.setText(_translate("Dialog", "<html><head/><body><p align=\"center\"><span style=\" font-size:12pt; font-weight:600; color:#aa0000;\">Infection Control Application</span></p></body></html>", None)) 

     if self.lineEdit_Username.text() == "": 
      self.lblResult.setText("Establishing Connection") 
     if self.lineEdit_Password.text() == "": 
      self.btnLogin.setEnabled(False) 

    def fieldsclear(self): 
     self.lineEdit_Username.setText("") 
     self.lineEdit_Password.setText("") 

    def text_show(self): 
     self.lineEdit_Password.setEchoMode(QtGui.QLineEdit.Normal) 



    def loginCheck(self): 
     import os 
     username = self.lineEdit_Username.text() 
     password = self.lineEdit_Password.text() 

     connection = sqlite3.connect("login.db") 
     result = connection.execute("SELECT * FROM USERS WHERE USERNAME = ? AND PASSWORD = ?",(username,password)) 
     if(len(result.fetchall()) > 0): 
      os.startfile('I:\\Infection Control System Database\Program Files\MainWindow\icMainWin_init.py') 
      Dialog.close() 

     else: 
      print("User Not Found !") 
      self.showMessageBox('Warning','Invalid Username and/or Password! Please Try Again.') 
      self.lineEdit_Username.setText("") 
      self.lineEdit_Password.setText("") 
     connection.close() 
    def showMessageBox(self,title,message): 
     msgBox = QtGui.QMessageBox() 
     msgBox.setIcon(QtGui.QMessageBox.Warning) 
     msgBox.setWindowTitle(title) 
     msgBox.setText(message) 
     msgBox.setStandardButtons(QtGui.QMessageBox.Ok) 
     msgBox.exec_() 

    def welcomeWindowShow(self): 
     self.welcomeWindow = QtGui.QMainWindow() 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self.welcomeWindow) 
     self.welcomeWindow.show() 
    def text_changed(self, value): 
     self.lblResult.setText("Connection Established") 

    def text_changed_Password(self): 
     if self.lineEdit_Password.text() == "": 
      self.btnLogin.setEnabled(False) 
     else: 
      self.btnLogin.setEnabled(True) 


    def text_hide(self): 
     self.lineEdit_Password.setEchoMode(QtGui.QLineEdit.Password) 



class ControlUi_Dialog(QtGui.QDialog): 
    def __init__(self, parent=None): 
     super(ControlUi_Dialog, self).__init__(parent) 
     self.ui = Ui_Dialog() 
     self.ui.setupUi(self) 
     self.ui.initUI(self) 



    def closeEvent(self,event): 
     result = QtGui.QMessageBox.critical(self, 
        "Confirm Exit...", 
        "Are you sure you want to exit ?", 
        QtGui.QMessageBox.Yes| QtGui.QMessageBox.No) 
     event.ignore() 

     if result == QtGui.QMessageBox.Yes: 
      event.accept() 


if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    app.setStyle("plastique") 
    Dialog = QtGui.QDialog() 
    ui = Ui_Dialog() 
    ui.setupUi(Dialog) 
    Dialog.show() 
    sys.exit(app.exec_()) 

:私は、次のコードを使用していますされていますが、とにかく彼らの窓に、各ユーザーのユーザー名とパスワードを設定するには、ログオンユーザー名とパスワード?私はドキュメントを探していましたが、何も見つかりませんでした。誰かが答えを持ってほしいと思っています。

答えて

0

このServer Faultの回答をご覧ください。それは、net useコマンドを実行することによって、ユーザーが有効かどうかをチェックするためのハッキング方法を靴に入れます。サブプロセス呼び出しを使用して外部端末コマンドを実行し、返されたエラーコードをチェックして、これが有効な資格情報であるかどうかを確認することができます。

+0

サブプロセスの代わりに、PyQtに同梱のQProcessクラスを使用することをお勧めします。 – Szabolcs

関連する問題