我在Windows7上使用PyQt4和Python2.7
我有一个QWidget,我希望在单击main时保持在QMainWindow上方。这个想法是,main将包含一系列“编辑”按钮,这些按钮将打开编辑小部件,而编辑小部件则用main上包含的信息进行刷新。只要小部件停留在主窗口的前面,我就不会特别关心它们中的任何一个是否“总是在前面”。
有几个问题可以解决这个问题,但我没有看到适用于我的特定用例的答案。一个处理小部件,但仅为应用程序主窗口提供答案(小部件位于其他环境窗口之上,但在单击主窗口时落后于应用程序主窗口),另一个处理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_())
发布于 2018-06-17 07:08:14
如果您希望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_())
https://stackoverflow.com/questions/50892264
复制相似问题