gpt4 book ai didi

Python Qt 绑定(bind) : How to increase the width of lines with width 0

转载 作者:行者123 更新时间:2023-11-28 18:40:54 24 4
gpt4 key购买 nike

使用以下简单示例(在我的计算机中与 PySide 或 PyQt4 配合使用效果很好):

import sys
import random
import numpy
from PySide import QtGui, QtCore

class Window(QtGui.QWidget):

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

self.resize(800, 500)
self.view = QtGui.QGraphicsView()
self.scene = QtGui.QGraphicsScene()
self.view.setScene(self.scene)
self.setWindowTitle('Example')

# Layout
layout = QtGui.QGridLayout()
layout.addWidget(self.view, 0, 0)
self.setLayout(layout)

# Styles
self.pen = QtGui.QPen(QtCore.Qt.black, 0, QtCore.Qt.SolidLine)
self.brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 255))

def addLine(self, x0, y0, x1, y1):
line = QtCore.QLineF(x0, -y0, x1, -y1)
pen = QtGui.QPen(QtGui.QColor(250, 0, 0, 255), 0, QtCore.Qt.SolidLine)
pen.setStyle(QtCore.Qt.CustomDashLine)
pen.setDashPattern([1, 4, 5, 4])
l = self.scene.addLine(line, pen)

def addRect(self, left, top, width, height):
rect = QtCore.QRectF(left, -top, width, abs(height))
r = self.scene.addRect(rect, self.pen, self.brush)

def fit(self):
self.view.fitInView(self.scene.sceneRect())

def resizeEvent(self, event = None):
self.fit()


if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
window.addRect(0, 1, 1, 1)
window.addLine(-1, -1, 2, 2)
window.addLine(0, 1, 1, 0)
window.fit()
sys.exit(app.exec_())

我能够绘制两条宽度恒定的红线;这意味着无论正方形和线条的大小(坐标)如何,它们都不会改变,无论我是否重新调整窗口大小:

enter image description here enter image description here

这是因为我正在使用宽度为 0QtGui.Qpen。但是,如果我使用另一个宽度 > 0,那么观察到的线宽会随着窗口大小的改变而改变(或者如果正方形和线也有其他尺寸也会改变):

enter image description here enter image description here

是否可以更改(增加)线宽,使观察到的线比宽度设置为 0 时获得的线更粗,同时在窗口调整大小时保持相同的“观察到”宽度或者当正方形/线条的尺寸变化时?

编辑

按照 o11c 的建议,使用 setCosmetic(True) 会出现意外行为(至少我不希望发生这种情况);它为图像添加边距(增加 scene.sceneRect() 的大小)。当 isCosmetic() == True 时,这些边距似乎与 QPen 的宽度成正比:

enter image description here

已创建与此问题相关的新问题。参见 question 26231374了解更多详情:

最佳答案

根据 Qt C++ 文档,使用 setCosmetic functionQPen 上。我假设 python 包装器暴露了这一点。

关于Python Qt 绑定(bind) : How to increase the width of lines with width 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26211577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com