Python PyQt5 QMessageBox 无法打开
当我按下Infobutton时,我正在尝试打开一个消息框.它运行了Infodialogue方法,因为它打印了"我在这里",但没有打开Infobox.我缺少什么? 我使用python 3.5与pyqt5 谢谢! 这是代码: import sys from PyQt5.QtWidgets import (QApplication, QWidget, QToolTip, QPushButton, QMessageBox) from PyQt5.QtCore import QCoreApplication from PyQt5.QtGui import QIcon, QFont class mainWindow(QWidget): def __init__(self, screenWidth, screenHeight, windowWidth=400, windowHeight=400): super().__init__()
32 2023-07-20
编程技术问答社区
我怎样才能通过QTest获得对QMessageBox的访问呢?
我正在使用 qtest . 我可以使用命令从我的应用程序中访问小部件: savePushButton = mainWindow->findChild("savePushButton"); 它工作正常,但是现在我必须单击 qmessagebox的确定按钮. 我在这样的应用程序中创建了 qmessagebox : if( something_wrong ) { QMessageBox::warning(new Widget(), "Title", "Something wrong!"); } 我如何才能访问此 qmessagebox 及其按钮? 解决方案 我在以下链接上找到了一个解决方案: http://www.qtcentre.org/threads/31239-testing-modal-dialogs-with-qtestlib . 它使用命令QApplication::topLevelWidgets();
28 2023-07-18
编程技术问答社区
qmessagebox的问题,不能改变其位置
我有这个 int MainWindow::messageBox( QString button, QMessageBox::ButtonRole buttons, QString info, QMessageBox::Icon icon ) { QFont f; f.setPointSize(6); QMessageBox *message = new QMessageBox(this); message->setWindowModality(Qt::WindowModal); message->setFont(f); message->setText(info); message->addButton( button, buttons ); message->setWindowTitle("MainWindow"); message->setIcon(icon); message->move( t
14 2023-07-17
编程技术问答社区
检查一个QMessageBox并关闭它
我需要使用QTest在C ++ QT中自动化GUI测试(在Eclipse中) 我给出了一个函数,将一些选项卡添加到一个选项卡威特(最多最大9),如果您尝试打开第10个选项卡,则会出现一个qmessagebox: QMessageBox::critical(this, "MAX9", tr("Only a maximum of 9 tabs can be opened.\n")); 因为带有"添加选项卡"功能的整个菜单,并且一切都是私有的,所以我必须使用我的testClass插槽和信号访问该方法. 现在我的问题是,有没有办法检查是否有任何Qmessageboxes打开,如果是,则自动关闭它们? 编辑:已解决 我将vahancho的解决方案放入方法(cockemessageboxes)中,然后在测试中创建了一个计时器,该计时器调用cockemessageboxes()方法: QTimer *timer = new QTimer(this); connect(tim
64 2023-07-17
编程技术问答社区
QMessageBox阻止QDialog
我真的不知道如何提出我的问题... 我将我的应用程序带有qdialog作为主窗口. 该应用程序从远程机器中获得了不同的值,例如温度,湿度等. 用于开发,我添加了一个带有不同小部件的组框来模拟这些值.我对用户发出警告和警报有不同的限制. 例如,如果温度在30°C上升高,则我在请求时间(应用程序在远程机器上进行轮询)和电流温度打开一个QmessageBox.因此,每个请求周期都会更新. 我使用show()方法来提出消息框,以使我的应用程序在后台运行.现在的问题是:焦点是在消息框上,在我的主窗口/qdialog中没有任何内容可以单击消息框,直到消息框不接受/已完成为止. 这就是我的问题:在仿真模式下,我想使用不同的温度值来播放,我可以在主窗口中的滑块进行调整.如何以某种方式访问​​这些小部件/使消息框"不障碍"? 最好的问候 马蒂亚斯 解决方案 您所经历的被称为窗口的"模态".默认情况下,A QMessageBox是"应用模式".这意味着对所有
6 2023-07-17
编程技术问答社区
带有倒计时的QMessageBox
我想知道将倒计时计时器添加到QMessageBox的最佳方法是什么?例如,当显示消息框时,倒数计时器开始说5秒.如果用户不响应消息框,则消息框会选择默认选择. 解决方案 这样的事情怎么样: #include #include #include class TimedMessageBox : public QMessageBox { Q_OBJECT public: TimedMessageBox(int timeoutSeconds, const QString & title, const QString & text, Icon icon, int button0, int button1, int button2, QWidget * parent, WindowFlags flags = (WindowFlags)Dialog|MSWindowsFixedSizeDia
42 2023-07-17
编程技术问答社区
为QMessageBox设置父类
我不明白设置QMessageBox的父的好处,例如在以下代码中: void mainWindow::showMessage(QString msg) { QMesageBox::information(this, "title", msg); //'this' is parent } 有人可以帮我吗? 解决方案 可能有几件事.首先,QMessageBox继承QDialog.由于QDialog有父母的概念,因此QMessageBox也应该以保持一致性. 具体来说,文档说: 父级传递给qdialog构造函数. 至少,通常以新的对话框为中心显示一个新的对话框. 但是,还有更多! 根据文档,它可以实际影响功能.例如: 在Mac OS X上 它的 parent ,将消息框的窗口模式设置为qt :: window modal 或使用open().否则,消息框将是标准对话框. 另外,还有一个"窗口模式"和"应用程序模式"的概念,其中前者仅
34 2023-07-17
编程技术问答社区
一个阻塞但非模式的QDialog?
我有一堆图像,我想在上执行一些操作.处理每个图像后,我的程序应弹出一个对话框,以提示用户是否要继续下一个图像或流产.在此之前,他们应该有机会对图像或参数进行一些手动更改.无论如何,他们必须可以访问应用程序的窗口,而应阻止对话框的方法的执行,直到对话框关闭为止. 我尝试使用qmessagebox解决此问题,但是如果我通过exec()将其打开,则它会阻止整个应用程序,如果我使用show(),则执行程序而不会等待用户的反应. 是否有一种方便的方法来阻止对话框的调用方法或功能,但允许用户与其他Windows进行交互? 预先感谢您的任何提示. 解决方案 您应该将要阻止分为两个部分的方法分开.在第一部分的末尾,您需要显示对话框而不阻止对话框的"下一个"按钮,以与必须包含旧方法的第二部分的插槽.仅当用户按下按钮时,该插槽才会执行. 这是在QT中进行操作的正确方法.您需要明智地更改代码逻辑以实现此功能. 另外,您真的需要第二个对话框吗?您可以将"下一个"按钮放在主窗口小
14 2023-07-16
编程技术问答社区
在QMessageBox中添加详细的文本使关闭(X)按钮失效
我注意到了一个有趣的事情 - 如果我在qmessagebox中添加了详细的文本(添加了"显示详细信息..."按钮),然后执行它将显示系统框架的关闭(x)禁用(x)按钮,因此将此窗口标记为非-closable(右键单击帧 - >关闭禁用). 这是一些示例代码: QMessageBox box(QMessageBox::Critical, title, text, QMessageBox::Ok); box.setDetailedText(detailedText); // comment this line to get close button enabled box.exec(); 我什至没有找到在QT中手动执行此操作的方法.有什么想法吗? 谢谢 解决方案 我在Python 2.7和Pyside时遇到了同样的问题. 在此示例中,红色关闭按钮按预期工作: from PySide import QtGui, QtCore import sys a
182 2023-07-16
编程技术问答社区
我如何在另一个线程中显示MessageBox Qt
这是我的代码: int main(int argc, char *argv[]) { QApplication a(argc, argv); testApp w; w.show(); TestClass *test = new TestClass; QObject::connect(w.ui.pushButton, SIGNAL(clicked()), test, SLOT(something())); return a.exec(); } testclass.h class TestClass: public QObject { Q_OBJECT public slots: void something() { TestThread *thread = new TestThread; thread -> start();
32 2023-07-16
编程技术问答社区
带有 "不要再显示这个 "复选框的QMessageBox
如何显示一个带有"不再次显示"复选框的消息框? 我想象看起来像这样的东西: 解决方案 QT 5.2添加了将A QCheckBox添加到QMessageBox>的可能性.看看 qmessagebox :: setcheckbox :: setcheckbox 这是一些演示代码 if (this->showMsgBox) { QCheckBox *cb = new QCheckBox("Okay I understand"); QMessageBox msgbox; msgbox.setText("Am I nerve-wrecking?"); msgbox.setIcon(QMessageBox::Icon::Question); msgbox.addButton(QMessageBox::Ok); msgbox.addButton(QMessageBox::Cancel); msgbox.setDefaul
58 2023-07-16
编程技术问答社区
自动关闭QMessageBox
我正在构建一个QT Symbian项目,我想向用户展示一秒钟后应自动关闭的通知.我已经看到诺基亚在他们的UI中使用了很多. 现在,我正在使用下面的代码,以便用户可以关闭Qmessagebox,但是如果可以在1或2秒后自动关闭Qmessagebox,我希望它想要它.如何使用QT执行此操作? QMessageBox msgBox; msgBox.setText("Hello!"); msgBox.setIcon(QMessageBox::Information); msgBox.setStandardButtons(QMessageBox::Ok); msgBox.exec(); 解决方案 我建议子类添加您自己所需的行为... 添加setAutoClose(bool)和setAutoCloseTimeout(int)之类的方法并在启用AutoClose选项时触发A QTimer之类的方法很有趣! 这样,您甚至可以更改QMessageBox的外观,并写了一条文字:
40 2023-07-16
编程技术问答社区
使用QMessageBox的是/否消息框
如何显示QT中使用是/否按钮的消息框,以及如何检查其中的哪个? 即.看起来像这样的消息框: 解决方案 您将使用 QMessageBox::question 为此./p> 假设的小部件插槽中的示例: #include #include #include // ... void MyWidget::someSlot() { QMessageBox::StandardButton reply; reply = QMessageBox::question(this, "Test", "Quit?", QMessageBox::Yes|QMessageBox::No); if (reply == QMessageBox::Yes) { qDebug()
6 2023-07-16
编程技术问答社区
我怎样才能调整QMessageBox的大小?
我有一个QMessageBox我希望它更大.这是一个简单的QMessageBox,具有两个标准按钮,可以,并且取消.问题在于,它对于我的应用程序的目的很小.这样的代码显示: QMessageBox msg; msg.setText("Whatever"); msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); msg.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); int ret = msg.exec(); switch (ret) { case QMessageBox::Ok: ui->textEdit->clear(); break; case QMessageBox::Cancel: break;} 我尝试了几种增加尺寸的方法: msg.setSizePolicy(QSize
138 2023-07-16
编程技术问答社区
QMessageBox.Yes/QMessageBox.No的值
我学习了pyqt5(对我来说看起来很复杂),我想知道为什么 qmessagebox.yes (或否)具有特殊的价值,对我来说是 16384 .这就是我的意思: from PyQt5 import QApplication, QWidget, QMessageBox class App(QWidget): def message_box(self): resp = QMessageBox.question(self, 'foo', 'bar', QMessageBox.Yes | QMessageBox.No, QMessageBox.No) print(resp) 它打印16384(如果单击是)或65536(如果单击否),为什么不对还是错? 我知道我可以稍后将其与 qmessagebox.yes 或 qmessagebox.no 进行比较,但是我想知道那个魔术值在哪里以及为什么使用它们? 解决方案 因为是和否并不是唯一的选择.如
16 2023-07-15
编程技术问答社区
Qmessagebox背景和文本颜色
我有您在上面看到的消息响应.我设法将背景为黑色: msg.setStyleSheet("background-color: rgb(0, 0, 0);") 我已经以相同的方式尝试了文本,但看起来像这样: msg.setStyleSheet("text-color: rgb(255, 255, 255);") 我唯一的目的是文本是白色的,背景是黑色... 这是我的代码的一部分: msg = QMessageBox() msg.setText("Message has been sended") msg.setWindowTitle("SENT") msg.setWindowIcon(QtGui.QIcon("black tic.png")) msg.setIcon(QMessageBox.Information) msg.setStyleSheet("background-color: rgb(0, 0, 0);") msg.setStyleSheet("t
10 2023-07-14
编程技术问答社区
QMessageBox改变标准按钮的文本
我想将QMessageBox.Question用于图标.但是我想更改标准按钮的文本.我不希望按钮的文字是"是"和"否".我希望他们成为" evet"和" iptal".这是我的代码. choice = QtGui.QMessageBox.question(self, 'Kaydet!', 'Kaydetmek İstediğinize Emin Misiniz?', QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) 解决方案 QT提供了其在库中使用的所有内置字符串的翻译.您只需要为当前语言环境安装翻译器: app = QtGui.QApplication(sys.argv) translator = QtCore.QTranslator(app) locale = QtCore.QLo
4 2023-07-14
编程技术问答社区
pyqt: QMessageBox输出中的变量值?
现在,我在qmessagebox中显示带有文本的窗口.它可以正常工作并准确地显示文本. profBox = QMessageBox() QMessageBox.about(self,'Profile', "Gender: Age: ") #Ideal output is gender: F (stored in a variable) and Age: X (also stored in a variable) 我想包括在性别和年龄之后要提出的某些变量的值,但我对包含变量值的语法感到好奇.我会先将它们转换为字符串吗?我如何包含它们,因为一个.about框只能最多进行三个参数? 谢谢! 解决方案 使用 str.format str.format : >>> gender = 'M' >>> age = 33 >>> "Gender: {} Age: {} ".format(gender, age) 'Gen
16 2023-07-08
编程技术问答社区
用父窗口的closeevent关闭pyqt messageBox。
我有蛋糕 def __init__(): self._taskInProgress = threading.Event() def isFinished(self): self._taskInProgress.clear() self.progressBar.hide() self.close() def closeEvent(self, event): if self._taskInProgress.is_set(): reply = QtGui.QMessageBox.question(self, "Are you sure you want to quit? ", "Task is in progress !", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply ==
164 2023-06-19
编程技术问答社区
显示有多个参数的QMessageBox
我正在使用QT框架,我对此有点生锈. 我有两个QSTRINGS first和last 我想在QMessageBox中显示它们,但不知道如何包括多个参数. 这是我必须与参数编码的内容: QMessageBox::information(0, "Full Name", QString("%1 %2").arg(first)); 如何获得该输出中包含的其他参数(last)? 解决方案 所有arg()s返回QString,以便以下操作: QMessageBox::information(0, "Full Name", QString("%1 %2").arg(first).arg(last)); 有关更多信息,您可以检查文档在这里 . 其他解决方案 是的,应该做这样的事情: QMessageBox::information(0, "Full Name", QString("%1 %2").arg(first, last));
36 2023-03-01
编程技术问答社区