PyQt的:对话的窗口最小化按钮在OSX中缺少(PyQt: Dialog's Minimiz

2019-10-19 12:16发布

一个对话框,创建:

class GUI(QtGui.QMainWindow):
    def __init__(self):
        super(GUI, self).__init__()

global dialog
dialog = QtGui.QDialog()
myGui = GUI()

缺少窗口最小化按钮(OSX)。 它是有在Windows中。 我一定要设置一些标志来显示这个失踪控制器? 请指教,在此先感谢!

日后进行编辑:

我没有尝试解决无最小化按钮的问题与QtGui.QDialog()。 但现在看来,我partically知道如何使用QtGui.QMainWindow得到那个失踪按钮。 这里是表示基本语法最简单的代码:

from PyQt4 import QtCore, QtGui

app = QtGui.QApplication(sys.argv)

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        myQWidget = QtGui.QWidget()
        myBoxLayout = QtGui.QVBoxLayout()       

        myLineEdit = QtGui.QLineEdit("myLineEdit")
        myBoxLayout.addWidget(myLineEdit)

        myQWidget.setLayout(myBoxLayout)

        self.setCentralWidget(myQWidget)


window = MainWindow()
window.show()
window.resize(480,320)
sys.exit(app.exec_())

A“钥匙”“概念”背后QtGui.QMainWindow的是,我们首先声明了QWidget()

myQWidget = QtGui.QWidget() 

这是我们指定一个“主”的布局:

myQWidget.setLayout(myBoxLayout)

最后一步是不要忘记是分配这个QWidget的()使用对话框本身:

self.setCentralWidget(myQWidget)

其中,“自我”是QtGui.QMainWindow的实例化的子类。

Answer 1:

QtGui.QDialog不提供任何平台上的最小化按钮,但QtGui.QMainWindow确实提供了每个平台(Windows,Linux和OSX)上。 您正在创建一个QDialog对象,并在同一时间的目标GUI这是子类QMainWindow 。 如果你写myGui.show()窗口将为您提供所有三个按钮(最小化,最大化/还原和关闭)。 但在以下情况下dialog.show()你不会有他们两个(最小化和最大化/还原)。 这是Qt的限制。



Answer 2:

我不能在此测试自己,但你可以尝试设置这些窗口的标志 :

    dialog.setWindowFlags(dialog.windowFlags() |
        QtCore.Qt.WindowMinimizeButtonHint |
        QtCore.Qt.WindowSystemMenuHint)

(该WindowSystemMenuHint标志可能不是必需的)。



文章来源: PyQt: Dialog's Minimize Window Button is Missing in OSX