- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 LibreOffice 扩展,其中“选项”对话框必须具有以编程方式创建的复选框列表,因为它们取决于用户安装的额外数据文件( spelling/grammar checker 的自定义设置)。
在宏管理器中手动添加一些复选框非常容易 dialog editor我可以导出到 .xdl
文件并从 Python 加载,但我还没有找到任何可以添加复选框的“容器”,以便我可以自动定位和滚动。
我可以使用
以编程方式将条目添加到我在dialog.xdl 中创建的列表框boxC = windowC.getControl("toggleIds")
boxM = boxC.getModel()
entries = ("some", "checkbox", "entries")
uno.invoke(boxM, "setPropertyValue", ("StringItemList", uno.Any("[]string", entries)))
但是列表框中的多选需要按住 Ctrl 键单击,这不是很直观。
我可以使用以下方式以编程方式将单个复选框添加到对话框窗口(扩展程序选项选项卡的“主要部分”)
windowM = windowC.getModel()
ctx = uno.getComponentContext()
cb1 = ctx.ServiceManager.createInstanceWithContext("com.sun.star.form.component.CheckBox", ctx)
cb1.Label = "some label"
cb1.State = 1;
windowM.insertByName("mycb1", cb1)
将它放在最顶部,但似乎我必须手动执行所有滚动代码、定位等。如果我在这里多次执行 insertByName
,它会将它们全部添加在同一位置,我还没有弄清楚如何将它们添加到另一个下面。
我看到有 C++ 代码使用 SvxCheckListBox ,例如optcomp.cxx ,但这似乎是一个较新的开发,至少我在旧的 Java AWT docs 中找不到任何引用它的内容。 。
<小时/>TL;DR:是否有一种简单的方法可以通过编程方式创建从 Python 扩展到 LibreOffice 的复选框列表?
最佳答案
SvxCheckListBox
由 LibreOffice 用于对话框,例如工具 -> 选项 -> LibreOffice -> 字体中的替换表。但是,它没有由 API 公开,因此您无法使用它。
为了证明这一点,以下是 API 公开的所有接口(interface)和服务,其中包含单词“Box”,来自 offapi/type_reference/offapi.idl
。
com::sun::star::awt::UnoControlCheckBox
com::sun::star::awt::UnoControlCheckBoxModel
com::sun::star::awt::UnoControlComboBox
com::sun::star::awt::UnoControlComboBoxModel
com::sun::star::awt::UnoControlGroupBox
com::sun::star::awt::UnoControlGroupBoxModel
com::sun::star::awt::UnoControlListBox
com::sun::star::awt::UnoControlListBoxModel
com::sun::star::awt::XCheckBox
com::sun::star::awt::XComboBox
com::sun::star::awt::XMessageBox
com::sun::star::awt::XMessageBoxFactory
com::sun::star::form::component::CheckBox
com::sun::star::form::component::ComboBox
com::sun::star::form::component::ListBox
所以唯一的办法就是......
manually do all the scrolling-code, positioning etc.
我的建议是创建一个名为“CheckListBox”的新通用 Python 类来处理滚动和定位,然后派生或实例化它以制作选项的特定复选框。
关于python - 从 Python 在 LibreOffice 中创建复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49732534/
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以使溢出。 4年前关闭。 o
我有一个包含多个列的表格。 我只想要 target 值与 alg 值不同的行。在这种情况下,target 是 1 并且 alg 是 0。因此,第 2、4 和 5 行应该保留,而第 3 行应该删除。如何
我有一个百分比表: A | B | C ------------------- 1| 12% | 22% | 42% ------------------- 2| 52% | 2%
我有一个 Libreoffice Calc 工作簿,其中有 60 多张纸,其中许多都有复制到它们的大量图像。我想用 Calc Basic 宏删除所有图像。我尝试了以下失败并出现基本运行时错误,提示 P
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 12 个月前关闭。 Improve
我有一个格式为 HH:MM 的时间值求和列。总和的格式为 [HH]:MM,可防止 HH > 23 时翻转。我希望将此值转换为十进制数表示形式。例如: A B 1 12
有没有办法将模板应用于现有文档? 它似乎只有在我创建一个全新的文档时才有效,而且我不想复制粘贴所有内容。 最佳答案 我正在寻找相同的解决方案。我发现的唯一一件事是一个 LibreOffice 扩展来做
LibreOffice Calc 中的什么公式将计算不同 Week_Number 出现的次数?答案应该是2。 最佳答案 这个问题之前已经被问过很多次了。一种方法是在 B6 中输入以下公式然后按 Ctr
假设我在 LibreOffice calc 中有以下电子表格: | A | B | C | D | ------------------- |1| 1 | 2 | | 2 | |2| 2 |
LibreOffice Calc 中是否有接受 的函数整数 x 和 整数 y 并以该位置吐出单元格的内容? 有一个功能ADDRESS吐出给定 [x;y] 的地址。问题是我不知道如何取消引用它。 最佳答
我希望能够在 LibreOffice Calc 中选择两个单元格,然后按某种魔术键,结果交换两个单元格的内容。 我怎么做? 我为 Excel 找到了这个解决方案,但它在 LibreOffice 中不起
我正在寻找一种使用 LibreOffice 的 Calc 从网站获取一些数据的方法。 我之前使用带有 IMPORTXML 函数的 Google 表格,但因为它非常不可靠,所以我想改用 Calc。 我的
我想从 LibreOffice Calc 中多次出现的字符中获取最后一次出现。 例如我有一个字符串 abc1ba2ac2adeaa43add .现在,如果我正在搜索 a它应该返回 18。 最佳答案 使
我想在 LibreOffice Calc(v5.4.4.2 但可以升级)中实现一些条件格式,以突出显示其值通过公式计算而不是直接输入的单元格。 例如,一个单元格包含 =A3 将突出显示,而 Hello
我想为 Libreoffice Writer 创建一个模板,其中包含应显示在所有页面上的信息的右列。 事实上,我想要一种右侧的页眉。 有什么办法可以解决我的问题吗? 最佳答案 您可以使用 anchor
我有一个 LibreOffice 3 电子表格(在 Ubuntu 11.04 上),其中有一列包含数百个超链接,这些超链接仅显示为“链接”。 我需要将这些转换为纯文本,或者更糟糕的是显示超链接而不是文
看起来您只能从“数据”->“排序”中选择 3 个条件。有没有办法(可能是程序化的)使用额外的标准? 最佳答案 不,不调整代码是不可能做到的。从理论上讲,调整它并消除此限制应该很容易。对于 3-5 版本
我需要提取“日期字符串”作为表示日期/时间数据的单独列。 | A | B | C -+-----------------
我在 Windows 计算机上安装了 LibreOffice。 LibreOffice 附带了捆绑的 python.exe(版本 3.3),允许您用 Python 编写 LibreOffice 宏。这
我在 .docx 文件中的方程是 当我将 word 文件保存到 .odt 时,这个等式变成了 如何避免这个反问号? 最佳答案 解决方案:编辑等式并在等号后键入双引号 ("")。 关于libreoffi
我是一名优秀的程序员,十分优秀!