python - 类似Win32风格的pyqt Window

标签 python qt pyqt

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

Example

我玩了两个小部件的 setFrameStyle(即使用不同的样式和凹陷 - 然后为了很好地衡量所有其他合理的组合)并将 setContentsMargins() 设置为零以使其填充所有空间,但 qt 窗口关于边界看起来仍然很不一样。

最佳答案

我非常接近以下内容(使用 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文档对不同的框架样式进行了很好的概述。

要获得比 setFrameStyle 允许的更接近,您需要绘制自己的小部件/面板,或使用 QT 以外的东西。

wxPython

pywin32

关于python - 类似Win32风格的pyqt Window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6700393/

相关文章:

python - 神经网络的加权输入

c++ - 将 QComboBox 或 QSpinBox 设置为不允许的值

linux - Qt for Embedded Linux 数据目录不属于用户 0 :/tmp/qtembedded-0

c++ - 排序后如何从sqlite中获取数据?

python - GUI 在循环时变得无响应

python - Elasticsearch 中单个聚合的多个过滤器

python - 在python中获取列表的旋转

python - 使用 QObject 从 Python 线程发出信号

python - 在菜单中的图标和文本之间添加垂直分隔符

python - [\w\d] 中的\d 不是多余的吗?