我正在尝试使用 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 以外的东西。
关于python - 类似Win32风格的pyqt Window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6700393/