注释
@vlachoudis:我认为首先要做的是定义这个新界面需要的最低分辨率。是 1280×768 吗?1024×768?1400×1050?1080p?有无数的选择,但这些通常受到最低公分母的限制。由于 bCNC 在最慢的机器上运行得非常好,我认为这应该是这个问题最终决定的很大一部分。 对我来说,它是 1024×768 或 1280×768。 |
@chamnit: 分辨率是一个很好的起点。我同意它应该低至 1024×768。 但是好的@vlachoudis很好地使用了 tkinter 的可调整大小功能,所有 GUI 都适合各种分辨率。只有字体不能自动调整大小。 我相信就 cpu 功率而言,最消耗的小部件是主画布。添加一个选项来隐藏它,或者减少/优化刷新时间可以让 bCNC 在任何硬件上运行。 Tkinter 的主要问题(我开始欣赏它,因为它存在于大多数 python 安装中)是缺少硬件加速图形。特别是在 Rpi 中,它可能意味着性能的大幅提升。 |
@effer:调整大小功能会导致一些问题,比如应该如何调整大小,即使应该有单独的大分辨率版本和小分辨率版本。例如,小分辨率无法完成您的布局建议,但大屏幕或宽屏幕可以。这是现代 GUI 框架真正有用的时候,因为缩放和模块化更容易处理此类问题。 1024×768 的唯一问题是它没有那么大的空间。我见过的大多数 Grbl GUI 通过创建一个选项卡式窗口来处理这个问题,比如@vlachoudis提出了。每个选项卡仅显示每个选项卡所需的 GUI 元素。例如,画布(可视化工具)并不是一直都需要的,Grbl 的运行状态也不是。工作区选项卡可以展开以包含整个窗口,因此您可以更灵活地设置工件坐标偏移数据或探测工具。 硬件加速图形会很好,但我已经看到很多其他 GUI 的问题,在不同的机器上由于某种原因兼容性被破坏。我见过的可视化工具的最佳实现是通过 Web 浏览器并用 JavaScript 编写的。他们将特定于操作系统的问题与普遍支持的浏览器框架分离(并可以访问现代 GUI 框架)。这个模型非常有效。有一些关于使用 bCNC 强大的后端和虚拟吊坠方法来提供基于浏览器的解决方案的离线讨论。在这里,我认为我们可以投资于图形。 对于 bCNC 和 tkinter,我只想看到一个简单的用户友好界面。没有什么过于复杂。无论如何,我会考虑每个选项卡式窗口真正需要什么,并希望勾勒出一些东西。 |
@chamnit我的目标是获得最小的分辨率。当前版本的代码在垂直方向上有 690px 的限制,在水平方向上的限制较少。通过功能区重组,即使它占用了更多的垂直空间,它也为按钮释放了一些水平空间,因此它在垂直方向上需要的空间减少了 100px。 @effer3 列的建议很好,适合 16:9 的宽屏幕。在像我的 4:3 和 1024×768 分辨率的控制笔记本电脑这样的旧屏幕上会有点问题。 @effer还提到了同样的事情,有些小部件不需要像 DRO 一样一直打开,而且 MDI 占用太多空间。 大声思考,一个选项可能是有两列(因为它现在是控制面板+可视化工具)和顶部的功能区/工具栏,但是每列的内容由用户选择。例如 @chamnit也许只有我一个人,但我的工作方式总是希望打开可视化工具。如果没有在可视化器上看到位置,我无法慢跑或探测 |
我不太使用可视化工具。我主要在加载新的 gcode 时使用它来验证一切看起来是否正确。 |
@vlachoudis: 伟大的。所以 1024×768(OS 窗口和栏的 690 vert)听起来像是目标。虽然它可以水平扩展到 16:9 的宽屏幕。 至于可视化工具,的确,您可能确实需要它来进行探测和慢跑等操作,但您不一定需要它来进行所有操作。也许两栏的想法是合适的,只允许其中一栏只有可视化工具和编辑器。虽然不确定。 我同意太多的可配置性确实会增加复杂性。我们可能不得不像 Apple 一样,决定用户将与一个僵化的、有限的界面进行交互的内容和方式。标签页的想法有助于这种类型的简化。可以将探测设置为带有可视化器的单独选项卡,而工作坐标偏移和其他参数可以是另一个没有它的选项卡。慢跑也可以是一个单独的选项卡。尽管在选项卡之间切换可能很烦人,但实际上仅在作业设置期间使用慢跑,有时在作业完成后使用。从不在工作期间。 我喜欢 Carbide3d 的 CarbideMotion Grbl GUI 的一件事是它们简化了如何运行机器的基本任务。它不像 bCNC 那样功能齐全,因此请对此评论持保留态度。用户首先看到的是两个大按钮。加载作业或点动机器。单击一个。慢跑窗口非常简单,旨在让您确定零件零或您的工作开始位置。您可以在那里设置工作坐标。加载作业只是加载 gcode 文件并运行它,而您有一些最小的进给保持控制。它向您显示运行状态、位置、运行速度和完成百分比。就是这样。如果需要,您可以打开一个单独的窗口显示终端输出,另一个窗口用于 MDI。我并不是说 bCNC 应该这么简单,但这是一个我发现没有噪音的例子。 |
我相信人们可以在没有不必要的复杂性的情况下实现良好的可配置性,只需让事情变得直接和互动,并提供明显的状态和控制。 承租人,我们需要以下信息/部分:
我认为机器状态应该横跨机器的顶部,并且应该有一个分隔条允许用户确定它的大小—如果它们不合适,允许在合理的程度上重新安排,缩小(或放大)它们以适应可用空间。 所有其他事物都应该有多个状态,允许不同程度的交互,并且会排成一排,用户将能够确定每个区域的状态。 稍等一下,我看看我能画出什么。 |
IMO 主要有三个使用条件:
每个都需要一些其他不使用的小部件(除了用于工作和编辑的画布)。我们可以提供三个选项卡来切换到其中一种用途。然后在内部以更舒适的方式重新安排所有空间,并仅提供相关菜单。 |
@WillAdams谢谢你的素描。您的建议是拥有多个可以对用户展开/隐藏的列?它可以提供用户想要的任何配置,代价是增加点击以启用和禁用窗格。关于菱形按钮在 tkinter 中不可用。所有对象都是矩形的,但可以像画布中的绘图一样手动完成。 我看到提案之间有一些相似之处@WillAdams和@effer. 的确,现在的 bCNC 是两个程序合二为一,一个发送器和一个基本的 g 代码编辑器。这让两者都有一个共同的界面变得复杂。一种方法可能是对另一个程序隐藏一个程序的 gui 面板。 也许比界面更重要的是投资,因为它是由@chamnit 和@onekk 在不影响功能的情况下最小化小部件。例如,一旦设置了端口,您就不需要一直看到它们的波特率。也许其他小部件可以最小化,机器坐标?工作区设置坐标、探测、自动调平。提供具有相同功能的更少按钮。 |
@vlachoudis:也许创建一个与任务类型交叉引用的可用功能网格会很有用。例如,g 代码发送任务需要文件加载、运行时控制、实时反馈、可视化工具(可能)等。另一个任务,如文件编辑,将以不同方式填充此网格。 这可能会在它变得更简单之前变得混乱,它有点已经有了,但这将是对时间的巨大投资,并且告诉我们很多关于“形式将遵循功能”的信息。 |
是的,这正是我的想法。 同意功能和用法网格将是有用的东西——我会看看我能做什么。 |
所以终于我有一些空闲时间来草拟一些东西。 |
@effer: 这是一个非常好的布局建议。也非常接近我的想法。 @vlachoudis一直在等待我提供一些反馈,包括对 Grbl 未来的期望以及从研究 LinuxCNC、Mach3、其他 Grbl GUI 和 Haas 的状态中学到的东西。就在上周,我向他发送了一份包含一般概念和结构的提案大纲。基本上我的结论是没有灵丹妙药。最好的办法是尽可能地模块化,比如可视化模块或编辑器模块,并将模块特定的控件附加到每个模块。每个模块都可以放置在任何选项卡上的任何位置。这几乎就是你所做的@effer. 使用像这样的基于选项卡的模块方法,您将为每个用户/机器要求的自定义界面提供很大的回旋余地,这可能会截然不同。为此需要进行大量设置工作,但如果框架健全,这也将允许其他用户创建自己的模块并开始为 bCNC 项目做出贡献。 |
@chamnit:即使提出简单的重新设计样式,我也发现了许多不同的方法来最适合不同的工作需求。我同意最好的解决方案更多的是对一组不错的用户控件进行渐进式调整,这可能会花费很多时间。 很高兴听到工作仍在进行中,我们可以期待重大更新。我有点担心这种不寻常的(2 周)延迟通常经常更新@vlachoudis. 我正在等待新的插件系统准备就绪并继续为bCNC做出贡献 大家干得好。 |
谢谢@effer,看起来很干净。在过去的几周里,我尝试重新组织一些内部结构,以便允许为每个选项卡激活/停用按钮组,并由用户在哪些选项卡中组织他喜欢的组。 但是由于实验工作量大,加上欧洲的热浪和我国的政治局势,我没有太多时间在bCNC上工作。 |
一段时间以来,我一直在研究新界面。现在我很高兴地宣布 eval 分支包含一个“完全”可操作的新 bCNC 版本。除了界面上的许多变化外,它还根据您的评论和代码请求带来了许多新功能。 有一段时间我只使用新界面,除了一开始有点混乱,在不同的地方搜索命令,老实说,我发现它比以前更容易使用,控制机器和编辑 gcode版本。 如果您能在我将其推送到主分支之前进行测试以找到错误/问题并给我您的意见,我将不胜感激 代码:
界面: 好处是功能区和框架可以从 ini 文件中完全自定义,因此任何人都可以按照自己的喜好进行配置。有很多修改和改进。 简述一些改进变化:
目前的大小总是固定为 800×600 只是为了检查小屏幕。 |
大家好。 |
大家好。 想报告一下,新界面全面运行,以后就是默认master了。 最新添加的是“手动工具更换”,效果很好。昨天我生产了一块 PCB,我使用手动工具更换来创建各种尺寸的孔,没有问题。 有许多添加和改进必须记录在 Wiki 页面中。
它需要一些额外的工作来完成界面和功能(类 bCNC 和 Sender)之间的分离,以允许如果有人希望只运行挂件而不启动界面。 当然,按钮的位置是我的第一次尝试,因为我已经重新编写了整个代码,现在它们可以很容易地移动到我们需要的任何框架/功能区等。 瓦西利斯 |
很棒的工作瓦西里! |
谢谢@mandrav. |
@onekk是的,您可以在用户按钮和命令行中的任何位置使用 eval 函数。 g0 x[xmin] y[ymin] 然而,换刀功能现在位于 bCNC 内部。在“探针”选项卡中单击“工具”,您可以设置 bCNC 如何处理 M6(换刀命令)
The first time you need to perform a calibration cycle, so bCNC to find the height of the probe tester (plate or switch) vs the 0 of your surface |
当我开始编写 bCNC 时,我想快速完成一些事情来满足我作为 GUI 的需求。我不想开发一个 GUI 只是为了处理它,而是将其用作工具。所以一些决定,例如菜单、功能布局等,很快就完成了,没有想太多。现在因为有几个人在积极使用它,我认真地考虑以更好的方式重写界面。
我想解决/解决的问题是:
限制:
如果你想看一下,我在 eval 分支中有一个非常非常原始的版本。您可以使用 bCNC2.py 启动程序。有点像MS office的丝带风格。在投入更多时间之前,我想听听您的意见赞成/反对意见。
我有一些互动@effer 和@chamnit
您甚至可以画出一些东西并将其发送过来。
我的新方法
或者@effer提议
瓦西利斯