gpt4 book ai didi

python - QDialog - 防止在 Python 和 PyQt 中关闭

转载 作者:太空宇宙 更新时间:2023-11-03 12:28:17 25 4
gpt4 key购买 nike

我有一个使用 pyqt 和 python 编写的登录屏幕对话框,它在运行时显示一个对话框,您可以输入特定的用户名和密码来基本解锁它。只是我在学习pyqt时做的一些简单的事情。我正在尝试在其他地方使用它,但需要知道是否有办法阻止某人使用 x 按钮并关闭它我还想让它留在所有窗口的顶部,这样它就不能被移出的方式?这可能吗?我做了一些研究,但找不到任何可以帮助我的东西。

编辑:

这里要求的是代码:

from PyQt4 import QtGui

class Test(QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
self.textUsername = QtGui.QLineEdit(self)
self.textPassword = QtGui.QLineEdit(self)
self.loginbuton = QtGui.QPushButton('Test Login', self)
self.loginbuton.clicked.connect(self.Login)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.textUsername)
layout.addWidget(self.textPassword)
layout.addWidget(self.loginbuton)

def Login(self):
if (self.textUsername.text() == 'Test' and
self.textPassword.text() == 'Password'):
self.accept()
else:
QtGui.QMessageBox.warning(
self, 'Wrong', 'Incorrect user or password')

class Window(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)

if __name__ == '__main__':

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

if Test().exec_() == QtGui.QDialog.Accepted:
window = Window()
window.show()
sys.exit(app.exec_())

最佳答案

首先是个坏消息,根据 Riverbank mailing system不可能从窗口中删除关闭按钮

You can't remove/disable close button because its handled by the window manager, Qt can't do anything there.

好消息,可以override和ignore,这样当用户发送事件的时候,可以忽略或者放个消息什么的。

Read this article for ignoring the QCloseEvent

另外,看看这个问题,How do I catch a pyqt closeEvent and minimize the dialog instead of exiting?

使用这个:

class MyDialog(QtGui.QDialog):
# ...
def __init__(self, parent=None):
super(MyDialog, self).__init__(parent)

# when you want to destroy the dialog set this to True
self._want_to_close = False

def closeEvent(self, evnt):
if self._want_to_close:
super(MyDialog, self).closeEvent(evnt)
else:
evnt.ignore()
self.setWindowState(QtCore.Qt.WindowMinimized)

关于python - QDialog - 防止在 Python 和 PyQt 中关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18256459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com