【问题标题】:Styin tabs in Python - custom gui with tkinter [closed]Python 中的 Styin 选项卡 - 使用 tkinter 的自定义 gui [关闭]
【发布时间】:2015-01-28 20:44:15
【问题描述】:

是否可以使用模块 Tkinter 进行这种级别的自定义

这些是 Sublime Text Editor 的选项卡。我想用 python 创建这种选项卡,可以吗?如果是,那么我应该如何或应该使用另一个 Python GUI 库?我是 Python 新手,不知道如何完成这项工作。 我已经阅读了关于 Tabs Control 可以通过 Tkinter 的 Notebook Widget 实现的信息,但现在我很困惑它是否可能。请告诉我您可以使用 Tkinter 实现什么级别的自定义来帮助我。

编辑:骗子:Notebook widget in Tkinter

【问题讨论】:

  • From the official Python docs "Ttk Notebook 小部件管理一组窗口并一次显示一个。每个子窗口都与一个选项卡相关联,用户可以选择该选项卡来更改当前显示的窗口。”.你说“我是 Python 新手,不知道如何完成这项工作。”第一步是阅读文档,不是吗?
  • “像崇高”具体是什么意思?颜色?方形的?右边的x?其中哪些对你很重要?
  • @BryanOakley 颜色和形状 :)

标签: python user-interface tabs tkinter


【解决方案1】:

我推荐的 GUI 库是 Tkinter。 Tkinter 是一个非常易于使用的最新模块,预装了许多版本的 python。我看到您正在使用 Sublime Text,但要获得它,您不能使用 Sublime Text Editor,因为它没有预先安装。普通的 Python 可以从here 下载 成功安装 Python 后,网站上有说明,然后打开名为 IDLE 的应用程序。打开 IDLE 后,转到 File - New File,你应该会得到一个新的黑屏来填充你的所有代码。在 Python 2 中可以通过它制作一个简单的 GUI:

from Tkinter import *
#This code above will add Tkinter to your code
root = Tk()
#The code above says that the window we will open is called "root"
root.title("Maq's GUI")
#This code above says the title that will be displayed on the top of your window
root.geometry("200x200")
#The code above this is how big the GUI should be.
root.mainloop()
#The code above starts of all of our code.

如果您使用的是 Python 3,那么只需将 Tkinter 中的大写 T 替换为小写 t,就像在 Python 3 中一样,它们“重命名”了许多模块,包括 Tkinter。不要担心以 # 开头的代码行,因为它们不做任何事情,它们只是帮助解释这段代码是什么。在你学会了这个之后,你可以学习如何用 Tkinter 模块做很多其他的事情。感谢 Python 论坛的版主 Yorik,可以在 here 找到在线资源列表。就个人而言,我从两个网站上学会了使用 Tkinter 模块,我将在这篇文章的评论中附上,我需要更多的声誉:P 我将答案基于 Tkinter 的主要原因是因为几乎每个版本的 Python 都预装了 Tkinter。它也是一个简单的 GUI 制造商,但它确实有一些不便,这是意料之中的。

TTK 也是一个有用的小部件,它只是 Themed Tkinter。 TTK 带有来自 Tkinter 的 11 个小部件:Button、Checkbutton、Entry、Frame、Label、LabelFrame、Menubutton、PanedWindow、Radiobutton、Scale 和 Scrollbar TTK 还带有 6 个新的小部件:组合框、笔记本、进度条、分隔符、Sizegrip 和 Treeview。

TTK 允许拥有可以应用到其小部件的默认样式:

style = ttk.Style()
style.configure("BW.TLabel", foreground="black", background="white")
l1 = ttk.Label(text="Test", style="BW.TLabel")
l2 = ttk.Label(text="Test", style="BW.TLabel")

您可以添加许多样式,并将它们设置为小部件的自定义样式。它对外观非常有用。我将在说明中附加另一个 URL。

【讨论】:

【解决方案2】:

您打算使用什么版本的 Python,以及什么平台?

一个小术语,如果您不熟悉的话:在 Tk 中,构成 GUI 的对象(框架、画布、按钮、文本框、标签等)都称为小部件。

当 Tk 程序运行时,它本质上会执行以下操作:

  1. 创建一个框架(建立窗口的边界)
  2. 将画布添加到框架(允许程序绘制控件 在框架内)
  3. 创建代码来处理任何事件(代码可以 在单击按钮、调整框架大小、选择菜单后执行 选项等)。

这是一个非常基本的例子:

from Tkinter import *

    def clicked(): # code to handle the 
        print("Hey. Clicked.")

    if __name__ == "__main__":
        root = Tk() # initializes Tk
        button = Button(root, text="Click Me", command=clicked) # creates the button
        button.pack(pady=20, padx=20) # adds the button to the frame
        root.mainloop() # paint the frame and controls, user can click buttons, etc

多年来,Tk 经历了一些扩展。最初的 Tk 实现不支持 Notebook 小部件。但是你确实有几个扩展可以做到:

PMW (Python MegaWidget) PMW 是 John Grayson 对 Tk 小部件的扩展。 pmw.Notebook (http://pmw.sourceforge.net/doc/NoteBook.html) 上的文档提供了一个很好的示例,我在此不再赘述。

您需要安装 PMW 才能运行该示例。

ttk(主题 TK) ttk 与 PMW 的概念相似——它是 Tk 小部件的扩展。我认为这就是您在最初的帖子中所指的内容。这里有一个很好的 Python 2.7 Notebook 小部件实现的小示例:http://poquitopicante.blogspot.com/2013/06/blog-post.html

ttk 随 Python 2.7 和 3.4 一起提供,因此除非您使用的是旧版本的 Python,否则您应该可以使用 ttk。

wxPython wxPython 是跨平台 GUI 工具包 wx 库的 Python 特定实现。 wxPython 也有一个 Notebook 小部件,但它是单独安装的,并且不使用任何 Tk 的库。我更喜欢 wx,因为我发现代码更干净,但这是个人喜好问题。在他的博客上查看 Mike Driscoll 的示例:http://www.blog.pythonlibrary.org/2010/09/15/wxpython-a-simple-notebook-example/

如果您想了解更多关于 wxPython 的信息,您需要在http://www.wxpython.org/download.php 下载适用于您平台的运行时。强烈建议您同时下载 Docs and Examples 包,其中包含所有 wxPython 控件的精彩演示 - 包括源代码。

堆栈溢出 这里有几个案例涉及到 stackoverflow 上的 Notebook 控件: https://stackoverflow.com/search?q=python+tk+notebook

【讨论】:

  • 谢谢你的详细信息,我知道标签可以用 TTK 实现,但我想知道我可以用 TK 创建 sublime 之类的标签,如果是,那么如何:) 如果不是,那么我应该学习简单:)
猜你喜欢
  • 2022-01-12
  • 2012-05-21
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多