【发布时间】:2018-11-26 06:49:14
【问题描述】:
我在 Windows7 上使用 PyQt4 和 python 2.7
我有一个 QWidget,我希望在单击主窗口时保持在 QMainWindow 上方。这个想法是主将包含一系列“编辑”按钮,这些按钮将打开编辑小部件,而编辑小部件会使用主中包含的信息进行刷新。只要小部件保持在主窗口的前面,我并不特别关心是否“始终在顶部”。
有几个问题可以解决这个主题,但我没有看到适用于我的特定用例的答案。一个处理小部件,但只为应用程序主窗口提供答案(小部件停留在其他环境窗口之上,但在单击主窗口时落在应用程序主窗口后面),另一个处理 Qt,但不是 Pythonic 示例:
How keep a QWidget always on top?
这是我目前的代码:
from PyQt4 import QtCore, QtGui
class Ui_MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self, None, QtCore.Qt.WindowStaysOnTopHint)
self.setWindowTitle("MainWindow")
self.resize(400, 300)
class Ui_Widget(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self, None, QtCore.Qt.WindowStaysOnTopHint)
self.setWindowTitle("Widget")
self.resize(400, 300)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = Ui_MainWindow()
MainWindow.show()
Widget = Ui_Widget()
Widget.show()
sys.exit(app.exec_())
【问题讨论】:
-
据我了解,您希望 Ui_Widget 始终位于 Ui_MainWindow 之上,例如 Google Chrome 之类的另一个窗口可以位于两者之上。
-
@eyllanesc 正确,只要小部件位于主窗口的前面,我并不特别需要 Chrome 位于主窗口的前面或后面。您在下面的答案完美地满足了这一点。再次感谢!