PyQt:对话框的最小化窗口按钮在OSX中丢失

alp*_*ric 2 python pyqt qtcore

创建一个对话框:

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

global dialog
dialog = QtGui.QDialog()
myGui = GUI()
Run Code Online (Sandbox Code Playgroud)

缺少最小化窗口按钮(OSX).它在Windows中.我是否必须设置一些标志来显示这个丢失的控制器?请指教,提前致谢!

稍后编辑:

我没有尝试用QtGui.QDialog()解决无最小化按钮问题.但似乎我部分地知道如何使用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_())
Run Code Online (Sandbox Code Playgroud)

QtGui.QMainWindow背后的'关键''概念'是我们首先声明QWidget()

myQWidget = QtGui.QWidget() 
Run Code Online (Sandbox Code Playgroud)

我们为其分配了一个'主'布局:

myQWidget.setLayout(myBoxLayout)
Run Code Online (Sandbox Code Playgroud)

不要忘记的最后一步是使用以下命令将此QWidget()分配给对话框本身:

self.setCentralWidget(myQWidget)
Run Code Online (Sandbox Code Playgroud)

其中'self'是QtGui.QMainWindow的实例子类.

ekh*_*oro 8

我自己无法测试,但您可以尝试设置这些窗口标志:

    dialog.setWindowFlags(dialog.windowFlags() |
        QtCore.Qt.WindowMinimizeButtonHint |
        QtCore.Qt.WindowSystemMenuHint)
Run Code Online (Sandbox Code Playgroud)

(WindowSystemMenuHint可能没有必要标志).


qur*_*ban 1

QtGui.QDialog不在任何平台上提供最小化按钮,但QtGui.QMainWindow在每个平台(Windows、Linux 和 OSX)上提供。您正在创建一个QDialog对象,同时创建一个GUI属于 的子类的对象QMainWindow。如果您编写,myGui.show()窗口将为您提供所有三个按钮(最小化、最大化/恢复和关闭)。但在 的情况下dialog.show(),您将不会有其中两个(最小化和最大化/恢复)。这是Qt的限制。