问题标签 [ttk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5012 浏览

python - Python:使用 UI 树作为键和任何其他小部件作为值显示字典的字典

我有三个字典,一个提供所有可用选项的列表,两个提供选择的子集(一组用于默认值,一组用于用户选择)。我使用 python 内置的 JSON 解析器获得了三个字典。

我想在 UI 中显示左侧的树,它基于字典中的键,在右侧我想显示组合框、按钮、列表框或其他适当的小部件来操作数据那把钥匙。我需要这棵树,因为我真的在使用 dicts 的 dicts 并且我想允许折叠。

到目前为止,我已经研究了 tkinter、tkinter 的 ttk 和 tix 库,它们允许树,但不允许在右侧显示可配置列表。我还看到了一些从 python 的 IDLE 借用树的例子。

  1. 是否有提供此类功能的 GUI 工具包,或者没有这样的东西,我必须自己设计?
  2. 如果我必须自己设计,是否有任何 GUI 工具包可以推荐超过 tk ?
  3. 如果推荐的工具包不提供这种东西,是否有关于 GUI 设计的基本教程?

如果 GUI 工具包是跨平台兼容的(*nix 和 win)并且如果可能的话可以免费分发,我更喜欢它。出于兴趣,是否有关于使用 tk 创建自定义小部件的教程,我尝试过寻找,但我一直被定向到 tk 的小部件使用而不是小部件设计:s

作为一个最小的例子,我现在已经放弃了额外的 dicts 并具有以下内容:

0 投票
5 回答
15802 浏览

python - 删除 Treeview 对象的空第一列

我正在尝试制作一个程序,该程序使用 检索数据库中的记录sqlite3,然后使用Treeview.

我成功地用记录创建了一个表,但我无法删除第一个空列。

在此处输入图像描述

0 投票
1 回答
3967 浏览

python - 在 ttk / python 中更改标签小部件的填充颜色

我正在尝试在 python 中显示带有 ttk/tkinter 的图像。该图像有一个白色边框,我想在更大的白色背景上显示这个图像 - 所以它周围有很多空白空间。

为此,我在标签中使用“padx”和“pady”,每个 100 像素。不幸的是,填充区域是灰色的。

现在我尝试更改标签的前景色和背景色无济于事。填充区域保持灰色。然后我将标签放在 Frame 小部件中,并尝试更改 Frame 的前景色/背景色。但不幸的是,Frame 小部件不听 width= 和 height= 参数。此外,如果我更改前景色,则 SUNKEN 边框会更改颜色 - 真的很酷,但对我来说完全没用:/。

有人可以帮我吗?当前的非工作代码如下所示:

0 投票
2 回答
10380 浏览

python - Tkinter 在未聚焦的文本小部件上更改选择背景颜色

当小部件没有焦点时,我试图在 Mac OS X 上的 Tkinter Text 小部件中更改所选文本的默认背景颜色。默认的未聚焦选择颜色为灰色。经过数小时的搜索,我无法找到一个开箱即用的解决方案来做到这一点。这是我尝试过的:

  • 当小部件未聚焦时,使用selectbackground选项更改选择颜色不会更改选择颜色。例如,它保持灰色。
  • 也没有Text.tag_configure("sel", background=...)
  • ttk.Style.map与状态一起使用"!focus"适用于 Entry 小部件(和其他小部件),但不适用于 Text 小部件。

所以我不得不自己动手(见下文)。有一个更好的方法吗?

0 投票
1 回答
3843 浏览

performance - Python GUI (tkinter.ttk) 应用程序缓慢

我已经用 ttk 完成了(工作)应用程序。它使用自行创建的模块来显示与 comport 相关的控件和在其上绘制一些图形的画布。当我创建我的对象的一个​​实例时,它会启动一个线程,在该线程中处理串行输入并将其附加到一个列表(每个图表一个列表)。当我有 3-6 个图表时,应用程序变得明显变慢。它也有一些错误,但当我完成一般概念时,我会解决它们。

可以帮助您帮助我的事情:

  • comport 是一个自写对象的实例,它派生自 LabelFrame 和 Serial.Serial
  • 图表的坐标存储在列表字典中: self.graphs = {} self.graphs['name1']=[] 存储的坐标数量最多为画布的宽度,因此每个图表大约 1000-2000 个。有六张图 - 请乘以 6
  • 随着每个新坐标的到达,我从列表中弹出(0)并附加()新坐标
  • 我忘了,我还将每组新坐标的时间存储在一个单独的列表中
  • 我使用 preiodic 调用函数来处理列表: self.after(100, func=self.periodicCall) 因此,每 100 毫秒我从画布中删除(全部),并用线条集绘制每个图形。所以如果我在 6 个 graps 中有 1000 个坐标,我会画 6000 条小线
  • 当然还有一些服务信息,比如一些尺子

所以我想这个想法很清楚。我想弄清楚什么是更好的方法。我只是 python 和编程的初学者,所以我要为我将要发布的代码以及它会引起的眼痛寻求你的借口。我没有任何编程风格,我想修复它。至少一点。因此,欢迎对您将在代码中看到的任何内容发表任何其他评论。

并且串行部分 - 也可能滞后(当我曾经每隔一秒左右重新枚举端口时就会滞后......)

更新:我按照布赖恩的建议做了。现在我有两个屏幕重绘功能。它们之间的区别在于首先将所有行向左移动,在右侧添加新行并删除那些从画布上掉下来的行。第二个将线条向左移动并将从画布上掉下来的元素重新部署到右侧(不创建新元素)。就我的初始变体而言,其中任何一个都有很大的改进,但我没有看到两者之间的巨大差异 - 如果我有更多的元素,我可能会想要。后者虽然更适合我的应用程序,因为我不必跟踪那些掉下悬崖的人。

这里的功能:

0 投票
5 回答
20943 浏览

tkinter - 在 Python 中更改 ttk 按钮高度

这似乎是一个愚蠢的问题,但是是否可以手动更改 ttk 按钮的高度?

类似的东西button = tkinter.Button(frame, text='hi', width=20, height=20...)对于 tkinter 按钮来说效果很好。虽然我更喜欢使用 ttk 按钮,因为它在美学上看起来要好得多。

button = ttk.Button(frame, text='hi', width=20, height=20...)不起作用,高度似乎不是一个有效的选择。我已经尝试使用 config 设置它或在样式中寻找要更改的元素,但没有任何运气。

有一个简单的解决方案吗?我正在使用 Python 2.7,Windows 作为记录。抱歉,这似乎是一个微不足道的问题,但我环顾四周没有太多运气。

0 投票
1 回答
350 浏览

python - 如何使用 Python 创建文本变量标签 (ttk)

我正在尝试创建一个Labelwith ttk

我的目标是创建一个出现单词点的小部件。我创建了一个条目,我想显示这个词的价值。

这是我的代码:

这是创建的函数Label

这是创建条目的函数:

然后我调用这些函数:

我的问题是Label一直显示0。标签不会根据单词的点而改变。

谢谢你的帮助。MFF

抱歉含糊其辞。

附加信息:

我正在尝试创建一个拼字游戏。实际上,我的问题是我不知道如何显示这个词的价值。即使条目的值改变,标签也不会改变。

起初我认为 的价值val_entry_mot没有改变。所以我试图只显示通过改变这个函数输入的单词create_variable_text2()

有效。每次我更改条目中的单词时,标签都会显示该单词。

然后,我认为应该计算单词点的代码有缺陷。这里是:

values_scrabble()是一个打开文件并将其转换为字典的函数 ={'A': 1, 'C': 3, 'B': 3, 'E': 1, 'D': 2, 'G': 2, 'F': 4, 'I': 1, 'H': 4, 'K': 10, 'J': 8, 'M': 2, 'L': 1, 'O': 1, 'N': 1, 'Q': 8, 'P': 3, 'S': 1, 'R': 1, 'U': 1, 'T': 1, 'W': 10, 'V': 4, 'Y': 10, 'X': 10, 'Z': 10}

当我试图计算一个单词的分数时,它确实有效。所以我想我的问题不在这里。

这是游戏的屏幕截图。它是法语,但您必须知道的是,Entry顶部的第一个是您输入单词的位置,而正下方应该显示单词的点。

游戏画面截图

我希望我已经清楚了。谢谢你。

MFF

0 投票
2 回答
1629 浏览

python - 如何在 Windows 中使用 ttk 主题小部件更改字体

在 OS X 上,ttk.Style().configure('TLabelframe.label', font='helvetica 14 bold')用于更改 ttk.LabelFrame 小部件使用的字体。在 Windows 上,ttk.Style().configure('TLabelframe.label', font='arial 14 bold')除了将相同的字体信息返回到ttk.Style().lookup('TLabelframe.label','font').

我尝试了不同的字体名称和格式,创建派生样式,使用 TkDefaultFont 并仅更改大小,以及不同的小部件(TButton.label、TCheckbutton.label)。到目前为止,无论我尝试了什么,它似乎总是以默认大小使用 TkDefaultFont。

更改 python27/tcl/tk8.5/ttk/xpTheme.tcl(Windows 上的默认主题)中的字体设置确实会更改显示的字体。从主题设置中删除-font TkDefaultFont设置不会更改显示的内容。

关于这实际上如何工作的任何建议?

编辑:我之前没有尝试过更改 Label 小部件的字体,并且那个确实有效。

0 投票
2 回答
2582 浏览

python - ttk Treeview selection_set 不能接受空格

我正在 python 中使用 tkk 构建一个 gui,但我遇到了Treeview命令问题selection_set()。我试图在我的程序启动时使用它来设置默认选择,但它似乎不能接受带有空格的字符串。

原因:

任何人都可以提出任何建议吗?

0 投票
1 回答
5199 浏览

python - Python tkinter 入口值加法

我正在制作一个 Python GUI,其中用户将 int 值输入到一个Entry小部件中,然后程序将这些值添加在一起。

但是,由于某种原因,每当我尝试告诉程序添加这些值时,都会出现错误:

我环顾四周,但找不到有关此主题的任何内容。我尝试将Entry小部件声明为整数,IntVars但它没有奏效,所以我想知道是否真的可以将Entry值相加。