Python 如何创建具有多行并行字形/文本的GUI,其中字形具有x和y坐标

Python 如何创建具有多行并行字形/文本的GUI,其中字形具有x和y坐标,python,qt,pyqt,qgraphicsscene,Python,Qt,Pyqt,Qgraphicsscene,我目前正在创建一个应用程序来编辑在某个时间范围内发生的事件的并行列表。在模型/后端中,有一个列表列表,其中子列表按顺序排列所有项 每个事件都应该由一个字符串/字形(来自ttf字体)表示,并且每个文本行都应该像普通文本行一样进行编辑,并带有一些如何显示它们的例外。请看这张图片: 基本上每行代表一行文本。每个事件都是单个字符/图示符。那么它是一个文本编辑器?!不完全 没有换行符 多条平行线 每个图示符后面都有一个单独的空格(X方向) 每个字形可以分别“向上”和“向下”移动(Y方向)(可能是最重要的

我目前正在创建一个应用程序来编辑在某个时间范围内发生的事件的并行列表。在模型/后端中,有一个列表列表,其中子列表按顺序排列所有项

每个事件都应该由一个字符串/字形(来自ttf字体)表示,并且每个文本行都应该像普通文本行一样进行编辑,并带有一些如何显示它们的例外。请看这张图片:

基本上每行代表一行文本。每个事件都是单个字符/图示符。那么它是一个文本编辑器?!不完全

  • 没有换行符
  • 多条平行线
  • 每个图示符后面都有一个单独的空格(X方向)
  • 每个字形可以分别“向上”和“向下”移动(Y方向)(可能是最重要的一点)
  • 如果你删除了一个标志符号,它右边的所有项目都会转到“左”一步来缩小间距(就像在普通的文本编辑器中一样)
  • 如果您插入了一个标志符号,则其右侧的所有项目都要执行“向右”步骤,以创建要插入的间隙

  • QGraphicsLinearLayout涵盖了这些要点中的大部分,但对于这种方法来说,可能是错误的小部件/布局。您有什么建议吗?

    我建议尝试将事件设置为
    qgraphicscene
    对象(或者可能是从
    qgraphicstext
    派生的类)。让每个人都独立定位,但要让他们知道自己线路上的“下一个”事件,就像一个链表一样。然后,当一个事件被插入或删除时,您可以快速执行该操作,并(不幸的是,速度较慢)更新行中其他事件的位置。如果只是将位置设置为上一项右侧的X像素,那么此更新可能不会太多代码,但它必须在修改后更新行中的每个事件

    您可以在右侧的事件是当前事件的子事件时执行某些操作,并将位置更新推送到Qt。我不知道这样做是否更有效率,我也不知道幼树到底能有多深


    更新事件的Y位置(要求4)应该很容易:只需更改其Y位置。

    我建议尝试将事件设置为
    qgraphicscene
    对象(或者可能是从
    qgraphicstext
    派生的类)。让每个人都独立定位,但要让他们知道自己线路上的“下一个”事件,就像一个链表一样。然后,当一个事件被插入或删除时,您可以快速执行该操作,并(不幸的是,速度较慢)更新行中其他事件的位置。如果只是将位置设置为上一项右侧的X像素,那么此更新可能不会太多代码,但它必须在修改后更新行中的每个事件

    您可以在右侧的事件是当前事件的子事件时执行某些操作,并将位置更新推送到Qt。我不知道这样做是否更有效率,我也不知道幼树到底能有多深


    更新事件的Y位置(要求4)应该很容易:只需更改其Y位置。

    您能提供一些关于我们在这里讨论的维度的信息吗?5行15个事件?100行5000个事件?@Exa当然可以。我无法预测,因为这是用户的选择,但这里有一些常识:因为下限不会有问题(性能方面),无论如何,一个共同的上限大约是150行,包含数百到5k个事件。上面的值不应该被阻止,但很少被阻止,而且用户从这里开始都会期望性能问题。您能提供一些关于我们在这里讨论的维度的信息吗?5行15个事件?100行5000个事件?@Exa当然可以。我无法预测,因为这是用户的选择,但这里有一些常识:因为下限不会有问题(性能方面),无论如何,一个共同的上限大约是150行,包含数百到5k个事件。上面的值不应该被阻止,但很少会被阻止,而且用户会期望从现在起出现性能问题。