小编jus*_*ppy的帖子

PyQt5:我无法理解 QGraphicsScene 的 setSceneRect(x, y, w, h)

我看到有人说如果你想把QGraphicsScene的坐标原点放在QGraphicsView的原点,即左上角。您需要让它们具有相同的大小。

所以这就是我所做的:

import sys
from PyQt5.QtWidgets import QApplication, QGraphicsLineItem, 
QGraphicsScene, QGraphicsView


class Demo(QGraphicsView):
    def __init__(self):
        super(Demo, self).__init__()
        self.resize(300, 300)

        self.line = QGraphicsLineItem()
        self.line.setLine(0, 0, 100, 100)

        self.scene = QGraphicsScene()
        self.scene.setSceneRect(0, 0, 300, 300)
        self.scene.addItem(self.line)

        self.setScene(self.scene)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = Demo()
    demo.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

视图的大小是 300x300,我用它setSceneRect()来确保场景的大小是 300x300。

在本例中,场景的原点位于左上角。 在此输入图像描述

然而,当我使用 时setSceneRect(0, 0, 150, 150),原点不在那里,而是在 (75, 75)! 在此输入图像描述

为什么?我认为前两个参数设置setSceneRect(x, y, w, h)坐标原点应该在哪里。当Scene小于View时,如何确保Scene的原点在左上角?

任何帮助,将不胜感激!

python pyqt qgraphicsscene pyqt5

6
推荐指数
1
解决办法
3739
查看次数

Qt:如何在pro中包含带空格的路径

平台:Windows 10

Qt版本:5.15.1

例如,我想C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt在 pro 文件中包含此路径。

以下是我尝试过的方法:

  1. 使用$$quote()

    INCLUDEPATH += $$quote(C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用" "

    INCLUDEPATH += "C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 一起使用$$quote" "

    INCLUDEPATH += $$quote("C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt")
    
    Run Code Online (Sandbox Code Playgroud)
  4. 改成:\\/

    INCLUDEPATH += $$quote("C:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/ucrt")
    
    Run Code Online (Sandbox Code Playgroud)

一切都不好,这是我不断收到的错误:

Qt 创建者错误

c++ escaping path special-characters qt-creator

5
推荐指数
1
解决办法
1612
查看次数

如何在PyQt5上动态更改语言(翻译)?

我想知道是否可以在不使用qt设计器制作UI的情况下动态更改语言(翻译)?这意味着我不想使用功能retranslateUi()来更新程序接口。

这是我的代码,但是我停留在标有#1#2#3的行上。不知道我应该使用什么来更新界面。

import sys
from PyQt5.QtCore import Qt, QTranslator
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, 
QComboBox, QVBoxLayout


class Demo(QWidget):
    def __init__(self):
        super(Demo, self).__init__()
        self.button = QPushButton(self.tr('Start'), self)
        self.label = QLabel(self.tr('Hello, World'), self)
        self.label.setAlignment(Qt.AlignCenter)

        self.combo = QComboBox(self)
        self.combo.addItem('English')
        self.combo.addItem('??')
        self.combo.addItem('français')
        self.combo.currentTextChanged.connect(self.change_func)

        self.trans = QTranslator(self)

        self.v_layout = QVBoxLayout()
        self.v_layout.addWidget(self.combo)
        self.v_layout.addWidget(self.button)
        self.v_layout.addWidget(self.label)
        self.setLayout(self.v_layout)

    def change_func(self):
        print(self.combo.currentText())
        if self.combo.currentText() == '??':
            self.trans.load('eng-chs')
            _app = QApplication.instance()
            _app.installTranslator(self.trans)
            # 1

        elif self.combo.currentText() == 'français':
            self.trans.load('eng-fr')
            _app = QApplication.instance()
            _app.installTranslator(self.trans)
            # 2

        else:
            _app = QApplication.instance() …
Run Code Online (Sandbox Code Playgroud)

python pyqt pyqt4 pyqt5 qt-linguist

2
推荐指数
1
解决办法
713
查看次数