Skip to main content
 首页 » 编程设计

python之类似Win32风格的pyqt Window

2025年05月04日8开发

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

我玩了两个小部件的 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