PyQt4 如何让 QWidget 始终在最前面?
PyQt4 How keep a QWidget always on top?
我在 Windows7
上使用 PyQt4 和 python 2.7
我有一个 QWidget,我想在单击主窗口时保持在 QMainWindow 上方。这个想法是,主要将包含一系列 'edit' 按钮,这些按钮将打开编辑小部件,而编辑小部件会刷新主要包含的信息。只要小部件位于主要 window.
的前面,我就不会特别在意两者是否 "always on top"
有几个问题涉及此主题,但我没有看到适合我的特定用例的答案。一个处理小部件,但仅针对应用程序主 window 提供答案(小部件保持在其他环境 windows 之上,但在单击主应用程序时落后于应用程序主 window),另一个一般解决 Qt 但不是 pythonic 示例:
PyQt: Always on top
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
之上,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_())
我在 Windows7
上使用 PyQt4 和 python 2.7我有一个 QWidget,我想在单击主窗口时保持在 QMainWindow 上方。这个想法是,主要将包含一系列 'edit' 按钮,这些按钮将打开编辑小部件,而编辑小部件会刷新主要包含的信息。只要小部件位于主要 window.
的前面,我就不会特别在意两者是否 "always on top"有几个问题涉及此主题,但我没有看到适合我的特定用例的答案。一个处理小部件,但仅针对应用程序主 window 提供答案(小部件保持在其他环境 windows 之上,但在单击主应用程序时落后于应用程序主 window),另一个一般解决 Qt 但不是 pythonic 示例:
PyQt: Always on top
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
之上,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_())