登录对话框 PyQt

2023-12-04

当客户询问我是否可以在应用程序启动时实现某种登录表单时,我几乎完成了我的应用程序。

到目前为止,我已经设计了用户界面,并修改了实际的执行。用户名和密码目前无关紧要。

class Login(QtGui.QDialog):
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.ui=Ui_dlgLogovanje()
        self.ui.setupUi(self)

        QtCore.QObject.connect(self.ui.buttonLogin, QtCore.SIGNAL("clicked()"), self.doLogin)

    def doLogin(self):
        name = str(self.ui.lineKorisnik.text())
        passwd = str(self.ui.lineSifra.text())
        if name == "john" and passwd =="doe":
            self.runIt()
        else:
            QtGui.QMessageBox.warning(self, 'Greška',
        "Bad user or password", QtGui.QMessageBox.Ok)           

    def runIt(self):
        myprogram = Window()        
        myprogram.showMaximized() #myprogram is

class Window(QtGui.QMainWindow):
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)


if __name__=="__main__":
    program = QtGui.QApplication(sys.argv)
    myprogram = Window()
    if Login().exec_() == QtGui.QDialog.Accepted:       
        sys.exit(program.exec_())

显示登录表单。如果输入正确的用户名和密码,则会显示主窗口并运行。但是,登录表单保持活动状态,如果我关闭它,主窗口也将关闭。


A QDialog有自己的事件循环,因此它可以与主应用程序分开运行。

您只需检查对话框的返回代码即可决定是否应运行主应用程序。

示例代码(PyQt5):

from PyQt5 import QtWidgets
# from mainwindow import Ui_MainWindow

class Login(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(Login, self).__init__(parent)
        self.textName = QtWidgets.QLineEdit(self)
        self.textPass = QtWidgets.QLineEdit(self)
        self.buttonLogin = QtWidgets.QPushButton('Login', self)
        self.buttonLogin.clicked.connect(self.handleLogin)
        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(self.textName)
        layout.addWidget(self.textPass)
        layout.addWidget(self.buttonLogin)

    def handleLogin(self):
        if (self.textName.text() == 'foo' and
            self.textPass.text() == 'bar'):
            self.accept()
        else:
            QtWidgets.QMessageBox.warning(
                self, 'Error', 'Bad user or password')

class Window(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)
        # self.ui = Ui_MainWindow()
        # self.ui.setupUi(self)

if __name__ == '__main__':

    import sys
    app = QtWidgets.QApplication(sys.argv)
    login = Login()

    if login.exec_() == QtWidgets.QDialog.Accepted:
        window = Window()
        window.show()
        sys.exit(app.exec_())

示例代码(PyQt4):

from PyQt4 import QtGui
# from mainwindow import Ui_MainWindow

class Login(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Login, self).__init__(parent)
        self.textName = QtGui.QLineEdit(self)
        self.textPass = QtGui.QLineEdit(self)
        self.buttonLogin = QtGui.QPushButton('Login', self)
        self.buttonLogin.clicked.connect(self.handleLogin)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.textName)
        layout.addWidget(self.textPass)
        layout.addWidget(self.buttonLogin)

    def handleLogin(self):
        if (self.textName.text() == 'foo' and
            self.textPass.text() == 'bar'):
            self.accept()
        else:
            QtGui.QMessageBox.warning(
                self, 'Error', 'Bad user or password')

class Window(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)
        # self.ui = Ui_MainWindow()
        # self.ui.setupUi(self)    

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    login = Login()

    if login.exec_() == QtGui.QDialog.Accepted:
        window = Window()
        window.show()
        sys.exit(app.exec_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

登录对话框 PyQt 的相关文章

随机推荐

  • 如何在 Swift 中使用正则表达式创建字符串分割扩展?

    我编写了创建的扩展split method extension String func split splitter String gt Array
  • 将实体框架与 MySQL 一起使用时,Unicode 字符将替换为基本字符

    背景 我注意到 当通过实体框架从我的 MVC 网站保存数据时 如果我有类似希腊语 的内容 它会被转换为 a 所采取的行动 我推翻了OnModelCreating在数据库上下文中并添加以下代码 modelBuilder Properties
  • 如何在 Python 多处理中使用类?

    下面是一些示例代码 用于读取文件并将每一行相加 它应该将 0 到 20 之间的所有数字相加 然而 我总是得到一个结果0 可以看到中间计算成功了 为什么最后的结果是0 有一个更好的方法吗 我试图对更大 更复杂的输入文件进行更多计算 并存储一些
  • 当我最大化 JInternalFrame 时 JInternalFrame 上的示例程序 JMenubar

    Hi I need an Example program in which When i maximize the JInternalFrame the JMenuBar of JFrame should set on JInternalF
  • iPad应用程序可以直接启动另一个应用程序吗?

    我想知道是否可以直接从另一个应用程序中启动 iPad 应用程序 例如 我可以编写一个登录页面 该页面也会带您进入桌面类型页面 您可以在其中选择要运行的应用程序 然后以新线程的方式启动该应用程序 我不确定这是否可行 我只是对新的 iOS 多任
  • 我怎样才能访问放置在 WEB-INF 文件夹中的文件

    我是java新手 有一个奇怪的问题 我在 WEB INF 文件夹中创建一些文件夹 主题 js css 并将我的文件放入此文件夹中 在index jsp中我通过以下方式使用css文件 效果很好 但在 style css 文件中 我有一个 di
  • 如何在Javascript中获取`background-color`属性值? [复制]

    这个问题在这里已经有答案了 fiddle 以下代码警告空字符串 HTML div test div CSS test background color f00 SCRIPT alert document getElementById tes
  • 验证 Assertj 中是否已调用断言

    我正在阅读使用 Assertj 来验证结果的测试类 有时 我会发现一个没有断言的assertThat assertThat object getField 是否有可能在开发周期的某个地方识别这些类 我的第一个猜测是使用自定义声纳规则 尽管我
  • 无法使用 Mac x86 程序集将 .data 中的变量移动到寄存器

    我用 AT T 语法编写了一小段程序集 目前已在 data部分 但是 当我尝试将这些变量中的任何一个移动到寄存器时 例如 eax 一个错误来自gcc被提出 代码和错误信息如下 data x int 14 y int 4 str string
  • Java静态序列化规则?

    我正在使用一些静态方法和字段进行保存状态序列化 我可以发誓尽管序列化和静态造成了混乱 我应该让所有静态都是瞬态的吗 增加通话量会恢复正常吗 statics 是隐含的transient 所以你不需要这样声明它们 序列化是为了序列化实例 not
  • x86_64 程序集 - 尝试在 x64 程序集中编辑数组内的字节时出现段错误

    我遵循的教程适用于 x86 是使用 32 位汇编编写的 我尝试在学习 x64 汇编的过程中遵循该教程 直到本课为止 一切都进展顺利 我有以下简单的程序 它只是尝试修改字符串中的单个字符 它编译得很好 但运行时出现段错误 section te
  • 使用 firebase 进行 JUnit 类测试

    我试图JUnit测试这个类 public class WeekListActivity extends AppCompatActivity implements AdapterView OnItemClickListener private
  • 如何解决此错误“webelement 不支持索引”[webdriver][python]

    我正在进行 xpath 搜索 page driver find element by xpath td class mceIframeContainer mceFirst mceLast 1 这给了我在 firebug 中所需的第一类项目
  • Google Map API V3:MarkerClusterer 不会分解为标记

    我有一个应用程序 我使用 Google Map API 来显示用户使用其纬度 经度发布的帖子的标记 我使用了 MarkerClusterer 功能来更好地组织标记 该功能可以工作 但存在一些错误 本质上 我一直在家里对此进行测试 因此所有测
  • 我对 Sails.js 水线一对一关联逻辑感到困惑

    所以我感到困惑的原因是因为我是一名 PHP 开发人员并且经常使用 Laravel 和 FuelPHP 我真正不明白的是协会本身 我的意思是 我想创建一个基本的 hasOne BelongsTo 逻辑 其中包含以下内容 用户只有一份个人资料
  • 在 Scala 中计算最多 5 的中位数

    因此 在回答其他一些问题时 我偶然发现计算 5 的中位数的必要性 现在 有一个类似的问题用另一种语言 但我想要一个 Scala 算法 但我不确定我对我的算法是否满意 这是一个不可变的 Scala 版本 它具有最少的比较次数 6 并且看起来不
  • 由于 reticulate_python 导致闪亮应用程序部署出现问题

    我有一个应用程序想要部署在shinyapps io 上 我认为值得注意的是 应用程序中的数据是从 athena 的数据库中提取的 我用了这个包Rathena连接到数据库以及所有用于从我的计算机本地运行良好的内容 但是 我尝试将其部署到shi
  • 如何正确隐藏这些广告横幅?

    Sprite Kit 游戏 我希望在游戏过程中隐藏我的广告横幅 我已经将我的项目设置为包含 iAd 和 AdMob 广告横幅 在添加 AdMob SDK 和 AdMob 广告代码之前 当我想要隐藏 iAd 横幅时 隐藏它没有任何问题 现在由
  • 具有导出选项(如数据表)的等效单个 Html 文件

    我使用 DataTables 使用静态数据创建了一个 HTML 表 带有导出选项 搜索 分页 plnkr co edit n3cbx8GrGoJtOpgbxE32 p preview 类似的示例或工作 html 可在 angular ui
  • 登录对话框 PyQt

    当客户询问我是否可以在应用程序启动时实现某种登录表单时 我几乎完成了我的应用程序 到目前为止 我已经设计了用户界面 并修改了实际的执行 用户名和密码目前无关紧要 class Login QtGui QDialog def init self