小编eyl*_*esc的帖子

在matplotlib的弯曲的文本翻译

在我正在做的项目中,我必须从结构化文件(xml)中获取用户输入.该文件包含区域的道路数据,我必须将其绘制到matplotlib画布上.问题是,除了道路,我还必须渲染道路名称,大多数道路都是弯曲的.我知道如何以一个角度渲染文本.但我想知道是否有可能在字符串中途改变文字角度?

这样的事情:在弯曲的路径上绘制旋转的文本

但是使用matplotlib.

python matplotlib

11
推荐指数
2
解决办法
3099
查看次数

Qt5 QML,何时使用ColumnLayout vs Column?

例如,这有效:

import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.2

ApplicationWindow
{
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    function thingWidth()
    {
        return width*80/100
    }

    Column
    {
        spacing: 10;
        anchors.horizontalCenter: parent.horizontalCenter

        Thing { color: "red"; width: thingWidth(); }
        Thing { color: "yellow"; width: thingWidth();  }
        Thing { color: "green"; width: thingWidth();  }
    }

}
Run Code Online (Sandbox Code Playgroud)

Column改为ColumnLayout,它没有(调整窗口大小会导致布局出错).

任何帮助,谢谢.

编辑1:

这也是Thing.qml按要求,

import QtQuick 2.0

Item {
    property alias color: rectangle.color
    width: 50; …
Run Code Online (Sandbox Code Playgroud)

qt qml qt5

11
推荐指数
1
解决办法
6864
查看次数

PyQt5 QuickControls材质风格

我用最新的PyQt5 QuickControls试验,并试图通过QML申请材料风格解释这里这里:

QQuickStyle::setStyle("Material");
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我找不到在PyQt中对QQuickStyle类的任何引用来通过python代码应用样式,只有工作解决方案是为此指定命令行参数:

python app.py -style material
Run Code Online (Sandbox Code Playgroud)

有人能通过python脚本指出我正确应用QuickControls样式吗?

python qt pyqt pyqt5 qtquickcontrols

11
推荐指数
1
解决办法
1955
查看次数

Qt6 和多媒体模块

正如我在 Qt6 中看到的,不再有多媒体 API。我对吗?在 Qt6 中对于播放声音这样简单的任务,我现在应该查看第三方库是否正确?

qt qtmultimedia qt6

11
推荐指数
1
解决办法
2212
查看次数

如何从GUI停止QThread

这是我之前发布的前一个问题的后续问题.问题是当使用NOT子类化Qthread的推荐方法时,如何从GUI停止(终止|退出)QThread,而是使用QObject然后将其移动到QThread.下面是一个工作实例.我可以启动GUI和Qthread,我可以让后者更新GUI.但是,我无法阻止它.我为qthread(quit(),exit(),甚至terminate())尝试了几种方法无济于事.非常感谢.

这是完整的代码:

import time, sys
from PyQt4.QtCore  import *
from PyQt4.QtGui import * 

class SimulRunner(QObject):
    'Object managing the simulation'

    stepIncreased = pyqtSignal(int, name = 'stepIncreased')
    def __init__(self):
        super(SimulRunner, self).__init__()
        self._step = 0
        self._isRunning = True
        self._maxSteps = 20

    def longRunning(self):
        while self._step  < self._maxSteps  and self._isRunning == True:
            self._step += 1
            self.stepIncreased.emit(self._step)
            time.sleep(0.1)

    def stop(self):
        self._isRunning = False

class SimulationUi(QDialog):
    'PyQt interface'

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

        self.goButton = QPushButton('Go')
        self.stopButton = QPushButton('Stop')
        self.currentStep = QSpinBox()

        self.layout = QHBoxLayout()
        self.layout.addWidget(self.goButton)
        self.layout.addWidget(self.stopButton) …
Run Code Online (Sandbox Code Playgroud)

python pyqt pyqt4 qthread

10
推荐指数
2
解决办法
2万
查看次数

PyQt:使用QAbstractTableModel向QTableView添加行

我是Qt编程的新手.我正在尝试创建一个可以通过单击按钮添加行的简单表.我可以很好地实现表,但似乎无法获得更新的数据显示在表上.我相信我的问题源于这样一个事实:我似乎无法使用按钮正确调用任何类型的"更改数据"方法.我已经尝试了几种不同的在线解决方案,所有这些都导致了4年前的死胡同.到目前为止我所拥有的是基本结构,我无法弄清楚如何使用新数据更新表.

这是基本观点

我已经设置了一些测试数据.

在最后的实现中,表将从空开始,我想追加行并将它们显示在表视图中.

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class MyWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        # create table
        self.get_table_data()
        self.table = self.createTable()

        # layout
        self.layout = QVBoxLayout()

        self.testButton = QPushButton("test")
        self.connect(self.testButton, SIGNAL("released()"), self.test)        

        self.layout.addWidget(self.testButton)
        self.layout.addWidget(self.table)
        self.setLayout(self.layout)

    def get_table_data(self):
        self.tabledata = [[1234567890,2,3,4,5],
                          [6,7,8,9,10],
                          [11,12,13,14,15],
                          [16,17,18,19,20]]

    def createTable(self):
        # create the view
        tv = QTableView()

        # set the table model
        header = ['col_0', 'col_1', 'col_2', 'col_3', 'col_4']
        tablemodel = MyTableModel(self.tabledata, header, self)
        tv.setModel(tablemodel)

        # set the minimum size …
Run Code Online (Sandbox Code Playgroud)

python row button qtableview qabstracttablemodel

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

PyQt:单击按钮后更改GUI布局

好吧,我从Tkinter跳到PyQt,因为PyQt更先进,更好用.但!我在这里遇到了一些麻烦.

我按下主屏幕上的一个按钮后,我正在尝试更改GUI布局.我按下主GUI页面的第一个按钮,然后我希望它转到我将创建的另一个GUI页面.我一直坐在这里几个小时试图找到一些方法来做到这一点 - 没有YouTube上的视频,我没有找到任何帮助的堆栈溢出页面.所以我了解到有一个Qt Designer程序.我不喜欢这样的节目,所以请在回答时尽量避免使用它.

PS:我不想使用多个.py文件,但如果没有其他方法,我想我将不得不这样做.

到目前为止,这是我的代码:

class Window(QtGui.QMainWindow):

    def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(50, 50, 400, 450)
        self.setFixedSize(400,450)
        self.setWindowTitle(" Tool")
        self.setWindowIcon(QtGui.QIcon('PhotoIcon.png'))
        self.home()

    def home(self):
        ToolsBTN = QtGui.QPushButton('text', self)
        ToolsBTN.clicked.connect(ToolTab)
        ToolsBTN.move(50, 350)
        CPSBTN = QtGui.QPushButton('text', self)
        CPSBTN.clicked.connect(QtCore.QCoreApplication.instance().quit)
        CPSBTN.move(150, 350)
        CreatorBTN = QtGui.QPushButton('Creator', self)
        CreatorBTN.clicked.connect(QtCore.QCoreApplication.instance().quit)
        CreatorBTN.move(250, 350)
        self.show()

class ToolTab(QtGui.QMainWindow):

    def __init__2(self):
        super(ToolTab, self).__init__2()
        self.setGeometry(50, 50, 400, 450)
        self.setFixedSize(400,450)
        self.setWindowTitle(" Tool")
        self.setWindowIcon(QtGui.QIcon('PhotoIcon.png'))
        self.Toolsgui()

    def Toolsgui(self):
        CPSBTN = QtGui.QPushButton('123', self)
        CPSBTN.clicked.connect(QtCore.QCoreApplication.instance().quit)
        CPSBTN.move(150, 300)
        self.show()

def Run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    GUITOOL …
Run Code Online (Sandbox Code Playgroud)

python pyqt pyqt4 qmainwindow

10
推荐指数
1
解决办法
1万
查看次数

如何使用GoogleTest框架打印QString?

我将GoogleTest(GTest)框架与Qt5应用程序结合使用.

每当使用QString参数进行测试失败时,框架会尝试打印所有涉及的值.但是,它无法自动处理外来类型(在这种情况下为Qt5的QString).

QString test = "Test";
ASSERT_EQ(test, "Value");
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何让GoogleTest自动打印QStrings(=无需每次手动转换它们)?

qstring qt pretty-print googletest qt5

10
推荐指数
1
解决办法
995
查看次数

如何创建带有列标题的 tableview (5.12)?

我正在使用新的 qml tableview (Qt 5.12) 创建一个表。我能够在 C++ 中创建模型,并能够以表格格式和滚动条填充模型。如何向该表添加列标题?代码:

import QtQuick 2.12
import QtQuick.Controls 2.5
import Qt.labs.qmlmodels 1.0
//import QtQuick.Controls.Styles 1.4
import TableModel 0.1
Rectangle {
    id:table
    border.width: 3
    border.color: 'dark blue'
    QtObject{
        id:internals
        property int rows:0
        property int col:0
        property int colwidth:0
        property var columnName:[]
    }

    function setRows(num){ internals.rows = num}
    function setCols(num){ internals.col =  num}
    function setColWidth(num){internals.colwidth = num}

    function setColNames(stringlist){
        if(stringlist.length > 1)
            internals.col = stringlist.length

    dataModel.setColumnName(stringlist);
    }

    function addRowData(stringlist){
        var len = stringlist.length

         if(len >0)
         {
             dataModel.addData(stringlist) …
Run Code Online (Sandbox Code Playgroud)

qt tableview qml

10
推荐指数
2
解决办法
7593
查看次数

捕获 QApplication 中引发的异常

我正在尝试使用 PyQt5 编写一个在系统托盘中工作的应用程序。代码有时会引发异常,我需要能够捕获它们。

我希望当应用程序中发生异常时,主事件循环会退出,因此像这样捕获它应该可以工作:

try:
    application.exec()
except:
    do_stuff()
Run Code Online (Sandbox Code Playgroud)

在下面的例子中,当我按下“Raise”按钮时,我只看到了回溯,但我从来没有看到error catched!打印出来的。

from PyQt5 import QtWidgets, QtGui, QtCore

class ErrorApp():
    def __init__(self):
        # Init QApplication, QWidet and QMenu
        self.app = QtWidgets.QApplication([])
        self.widget = QtWidgets.QWidget()
        self.menu = QtWidgets.QMenu("menu", self.widget)

        # Add items to menu
        self.menu_action_raise = self.menu.addAction("Raise")
        self.menu_action_raise.triggered.connect(self.raise_error)

        self.menu_action_exit = self.menu.addAction("Exit")
        self.menu_action_exit.triggered.connect(self.app.exit)

        # Create the tray app
        self.tray = QtWidgets.QSystemTrayIcon(QtGui.QIcon("logo.png"), self.widget)
        self.tray.setContextMenu(self.menu)

        # Show app
        self.tray.show()

    def raise_error(self):
        assert False

e = ErrorApp()

try:
    e.app.exec()

except:
    print("error catched!")
Run Code Online (Sandbox Code Playgroud)

有 2 个类似的问题,但那里的答案没有做我需要做的: …

python exception pyqt pyqt5

10
推荐指数
1
解决办法
3604
查看次数