我在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_())
答案 0 :(得分:1)
如果您希望Ui_Widget
始终位于Ui_MainWindow
之上,则Ui_Widget
必须是Ui_MainWindow
的孩子,并且必须激活标记Qt::Dialog
如下所示:
from PyQt4 import QtCore, QtGui
class Ui_MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setWindowTitle("MainWindow")
self.resize(400, 300)
class Ui_Widget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setWindowFlags(self.windowFlags() | QtCore.Qt.Dialog)
self.setWindowTitle("Widget")
self.resize(400, 300)
self.move(200, 150)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = Ui_MainWindow()
MainWindow.show()
Widget = Ui_Widget(MainWindow)
Widget.show()
sys.exit(app.exec_())