<p>好吧。下面是一些代码来测试Nejat建议的基于triarions示例的<strong><code>QTimer</code></strong>方法。虽然我不知道这是不是内贾特的意思,它目前对我最有效。在</p>
<pre><code>from PySide import QtCore, QtGui
class TestWin(QtGui.QMainWindow):
def __init__(self):
super(TestWin, self).__init__()
self.w2 = QtGui.QWidget()
self.l = QtGui.QVBoxLayout(self.w2)
self.h = QtGui.QHBoxLayout(self.w2)
self.b = QtGui.QPushButton('hierarchic adjustSize()')
self.b2 = QtGui.QPushButton('deferred resize()')
self.h.addWidget(self.b)
self.h.addWidget(self.b2)
self.l.addLayout(self.h)
self.x = QtGui.QTextEdit('Some Text')
self.l.addWidget(self.x)
self.b.clicked.connect(self.adjustSize_hide_show)
self.b2.clicked.connect(self.qtimer_hide_show)
self.setCentralWidget(self.w2)
def toggleVis(self):
self.x.setVisible(not self.x.isVisible())
def adjustSize_hide_show(self):
self.toggleVis()
self.w2.adjustSize() # adjusts size of widget
self.adjustSize() # adjusts size of main window
def qtimer_hide_show(self):
self.toggleVis()
_timer = QtCore.QTimer()
_timer.singleShot(30, self._resizeHeight)
def _resizeHeight(self):
self.resize(self.width(), self.minimumSizeHint().height())
if __name__ == '__main__':
app = QtGui.QApplication([])
win = TestWin()
win.show()
app.exec_()
</code></pre>
<p>这样你就不需要访问应用程序,你可以实际调整到一个特定的方向。在</p>
<p>我不太愿意在这里耽搁。但它仍然可以在90%的时间内工作,延迟1毫秒!只要我试了2ms就100%成功。所以20ms肯定会在几乎所有的情况下成功地诱导一个非常小的闪烁tho(可能也取决于你的布局)</p>