gpt4 book ai didi

python - PySide + QGraphicsScene 仅显示为黑色

转载 作者:行者123 更新时间:2023-11-30 23:42:50 25 4
gpt4 key购买 nike

我想做的就是将“hello world”写入QGraphicsView中的QGraphicsScene。我究竟做错了什么?我在 Designer 中创建了一个 QGraphicsView ,然后在我的 __init__ 中创建了一个 QGraphicsScene 并向其中添加了一些文本......但我得到的只是是一个黑色的窗口。

import sys
from PySide import QtCore, QtGui
from PySide.QtGui import *

class MyDialog(QDialog):
def __init__(self):
super(MyDialog, self).__init__()
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.scene = QGraphicsScene()
self.ui.graphicsView.setScene(self.scene)
self.scene.setSceneRect(0,0,100,100)
self.scene.addText('hello')


def main(argv):
app = QApplication(sys.argv)
myapp = MyDialog()
myapp.show()
app.exec_()
sys.exit()

if __name__ == "__main__":
main(sys.argv)

以下是设计器的 UI 代码:

# everything from here down was created by Designer
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400, 300)
self.buttonBox = QtGui.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.graphicsView = QtGui.QGraphicsView(Dialog)
self.graphicsView.setGeometry(QtCore.QRect(50, 30, 256, 192))
self.graphicsView.setMouseTracking(False)
self.graphicsView.setFrameShadow(QtGui.QFrame.Sunken)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
self.graphicsView.setForegroundBrush(brush)
self.graphicsView.setObjectName("graphicsView")

self.retranslateUi(Dialog)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), Dialog.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)

def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))

我得到的就是这个,带有空白的黑色 Canvas :

screenshot

最佳答案

有两个问题...

首先,在 QGraphicsView 中将前景画笔设置为黑色。这意味着所有 child 都将继承它,除非他们另有指定。

用户界面

    brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
#self.graphicsView.setForegroundBrush(brush)
self.graphicsView.setBackgroundBrush(brush)

此外,由于您将背景更改为黑色,因此您应该将文本设置为您可以看到的颜色。因为默认情况下它是黑色的:

主要

    text = self.scene.addText('hello')
text.setDefaultTextColor(QtGui.QColor(QtCore.Qt.red))

如果您不关心黑色背景,只是想看看它的工作原理,只需在 UI 中注释掉这一行(或在 Designer 中取消设置画笔设置),并且不更改任何其他内容:

    # self.graphicsView.setForegroundBrush(brush)

关于python - PySide + QGraphicsScene 仅显示为黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11172307/

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