met*_*sim 3 python user-interface qt4 pyqt4
我正在使用QMessageBox中的不错的功能来向用户显示详细的文本。但是,展开后的窗口仍然很小,因此人们立即尝试调整窗口大小,以便可以看到更多细节。即使设置了我认为正确的设置,它也不允许调整大小。
这是PyQt4代码的相关代码段:
mb = QMessageBox()
mb.setText("Results written to '%s'" % filename)
mb.setDetailedText(str(myData))
mb.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
mb.setSizeGripEnabled(True)
Run Code Online (Sandbox Code Playgroud)
我是否错过了某个步骤,并且/或者这完全有可能吗?
如果您想制作一个可调整大小的消息框,请检查以下代码是否适合您:
class MyMessageBox(QtGui.QMessageBox):
def __init__(self):
QtGui.QMessageBox.__init__(self)
self.setSizeGripEnabled(True)
def event(self, e):
result = QtGui.QMessageBox.event(self, e)
self.setMinimumHeight(0)
self.setMaximumHeight(16777215)
self.setMinimumWidth(0)
self.setMaximumWidth(16777215)
self.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
textEdit = self.findChild(QtGui.QTextEdit)
if textEdit != None :
textEdit.setMinimumHeight(0)
textEdit.setMaximumHeight(16777215)
textEdit.setMinimumWidth(0)
textEdit.setMaximumWidth(16777215)
textEdit.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
return result
Run Code Online (Sandbox Code Playgroud)
下面是 messagebox 的调用方式:
mb = MyMessageBox()
mb.setText("Results written to '%s'" % 'some_file_name')
mb.setDetailedText('some text')
mb.exec_()
Run Code Online (Sandbox Code Playgroud)
解决方案取自here
希望这有帮助,问候
这是我要使用的解决方案。这不会使对话框可调整大小,但是会在细节框可见时使对话框本身更改为合理的大小。我毫不掩饰地偷了serge_gubenko的回答中的一些想法。即使您希望实现他的大小调整,我也会在下面谦虚地提供其他一些改进。
# Safe since everything in the namespace begins with 'Q'
from PyQt4.QtGui import *
class MyMessageBox(QMessageBox):
# This is a much better way to extend __init__
def __init__(self, *args, **kwargs):
super(MyMessageBox, self).__init__(*args, **kwargs)
# Anything else you want goes below
# We only need to extend resizeEvent, not every event.
def resizeEvent(self, event):
result = super(MyMessageBox, self).resizeEvent(event)
details_box = self.findChild(QTextEdit)
# 'is not' is better style than '!=' for None
if details_box is not None:
details_box.setFixedSize(details_box.sizeHint())
return result
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10666 次 |
最近记录: |