pyqt类似于Win32风格的窗口

时间:2011-07-14 21:53:02

标签: python qt pyqt

我正在尝试使用pyqt将一个Win32应用程序移植到Python,但是我似乎无法获得一个带有文本标签和编辑字段的简单窗口,例如以下简单的Win32样式(基本上是WS_EX_CLIENTEDGE):

Example

我使用setFrameStyle(即使用不同的样式和凹陷 - 然后用于测量所有其他合理的组合)两个小部件并使用setContentsMargins()来使其填充所有空间,但是qt窗口在边界方面仍然看起来很不一样。

2 个答案:

答案 0 :(得分:1)

我与以下内容非常接近(使用QtGui.QFrame.WinPanel):

import sys
from PySide import QtGui, QtCore

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):
        label = QtGui.QLabel("Test")
        label.setAlignment(QtCore.Qt.AlignCenter)
        label.setFrameStyle(QtGui.QFrame.WinPanel | QtGui.QFrame.Sunken)

        edit = QtGui.QTextEdit()
        edit.setFrameStyle(QtGui.QFrame.WinPanel | QtGui.QFrame.Sunken)
        edit.setText("Some text")
        edit.moveCursor(QtGui.QTextCursor.MoveOperation.End)

        vbox = QtGui.QVBoxLayout()
        vbox.setContentsMargins(1, 1, 1, 1)
        vbox.setSpacing(1)
        vbox.addWidget(label)
        vbox.addWidget(edit)

        self.setLayout(vbox)

        self.setGeometry(300, 300, 300, 150)
        self.setWindowTitle('Window Title')
        self.show()

def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

QFrame docs对不同的框架样式有很好的概述。

为了比setFrameStyle更接近,您需要绘制自己的小部件/面板,或使用QT以外的其他东西。

wxPython

pywin32

答案 1 :(得分:0)

您可能没有使用正确的风格。看看the documentation for QStyle

相关问题