【问题标题】:How to import Gtk, gi.repository? Best GUI for table grids? Tkinter * vs ttk? [closed]如何导入 Gtk、gi.repository?表格网格的最佳 GUI? Tkinter * vs ttk? [关闭]
【发布时间】:2017-03-16 07:18:09
【问题描述】:

我找到了一个使用 gi、gi.repository 和 Gtk 的程序。对于我的涉及 Excel 工作表导入和表格网格的 Python 脚本来说,这似乎是一个很棒的 GUI。

经过大量工作,我终于能够导入 gi,但仍然无法导入 gi.repository 或 Gtk (No module named "")即使我相信我已正确安装它们。

我尝试安装所有 Gnome 的东西,并使用用于 GTK3 的 Jhbuild,它只会把我所有的文件搞砸。我卸载并重新安装了这些东西5次。我还必须删除并重新安装 Python。

我放弃了 Jhbuild。没有更简单的安装 GTK 的方法吗?还是有更好的图形用户界面?

我一直在 Python 3 中使用 tkinter,但唯一的问题是我发现的包含表格网格的脚本使用 ttk,而我不使用 ttk。我不理解 ttk 并且过于明确(即 tkinter.ttk.Label 等与 tkinter * 的标签)。 Ttk 似乎已经过时了;如果我错了,请纠正我。

对于我的简单初学者脚本,我一直使用from tkinter import *,有人会认为导入所有 (*) 会包含 ttk,但我想它必须指定。即使我将所有内容从 tkinter * 转换为 ttk,使用 ttk 也会弄乱我的脚本中的所有内容。我显然做错了什么或 ttk 已过时。我收到诸如意外参数、未定义事物、名称错误、__init__ 错误等错误。看来您无法将(较新?)tkinter * 模块与(较旧?)ttk 模块啮合。

再次,如果有人知道最好、最新和最简单的 GUI,我将不胜感激。我在 Mac (Sierra 10.12.3) 上使用 Python 3。

【问题讨论】:

  • >>对于我一直使用from tkinter import *的简单初学者脚本,有人会认为导入所有(*)会包括ttklook here
  • “Ttk 似乎已经过时了;如果我错了,请纠正我。” - 你错了。 Ttk 比 tk 相对更现代,并且与 tkinter 本身一样过时。
  • 如果您需要帮助,您应该将您的问题分成几个问题并包含您的错误消息。就软件推荐而言,它们与 Stack Overflow 无关(请参阅help center)。

标签: python python-3.x tkinter ttk python-3.6


【解决方案1】:

每次导入 tkinter(任何方式或形式)时,它都会在您的计算机上搜索 ttk,这是 tkinter 的要求。在 Mac Sierra 上,默认的 ttk 不起作用,而且有很多错误,因此您需要安装自定义 ttk。

关注this link 安装推荐的mac版本。 记住只安装 8.5 而不是 8.6 python 还不支持 8.6。

其他常见的 GUI 包括 pyqt 和 pygame(用于游戏),同时内置了用于绘图的 turtle。附带说明一下,我更喜欢使用 tkinter,因为它易于使用并且具有大部分功能。

from tkinter import * 这样导入 tkinter 不是首选方式,因为名称空间是一件棘手的事情,因为很容易意外覆盖某些东西。例如:命名一个 tkinter.label Label。下次您想知道为什么不能创建另一个标签时。所以更好的方法是import tkinter as tk

【讨论】:

  • 谢谢!我是初学者,所以遇到了很多麻烦。您是说将 tkinter 导入为 tk 还是 ttk?如果是这样,tk 和 ttk 有什么区别? Ttk 是 tkinter.ttk.Label 而 tk 是 tkinter.Label?还是 ttk.Label 与 tk.Label?有什么不同?对不起,我是个菜鸟,雄心勃勃地想把东西弄起来并发挥作用。我刚刚读到最佳实践是import tkinter as tk from tkinter import ttk
  • tk 与 tkinter 相同,而 ttk 不同。但它们有很多相似之处
  • 作为初学者,我建议坚持使用 import tkinter as tk。一个简短的总结是 tk 更容易使用和配置,而 ttk 更可定制但更难使用。也检查这个答案帖子stackoverflow.com/questions/19561727/…
  • 记住:tk 和 ttk 是两个不同的东西,所以尽量不要把它弄乱。 tkinter.Label 与 tkinter.ttk.Label 不同,但它们非常相似。
  • 我们有时讨厌菜鸟问题,因为它已经被问了数百次,或者要求做某种家庭作业。我认为不喜欢你的原因是因为你对一个问题的问题太多了。不过没关系,大部分问题都值得回答;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-28
  • 2012-04-22
  • 2020-05-27
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多