Python中的Styin选项卡 - 使用tkinter定制gui

时间:2014-11-30 21:13:32

标签: python user-interface tabs tkinter

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

enter image description here

这些是Sublime Text Editor的标签。我想用python创建这种标签,这样可能吗?如果是,那么我应该如何或应该使用另一个Python GUI库?我是Python新手,无法弄清楚如何完成这项工作。 我已经阅读过Tabs Control可以通过Tkinter的Notebook Widget实现,但现在我感到困惑是否有可能。请告诉我使用Tkinter可以达到的定制级别,帮助我。

编辑:Dupe:Notebook widget in Tkinter

2 个答案:

答案 0 :(得分:1)

我推荐的GUI库是Tkinter。 Tkinter是一个非常易于使用的 - 最新模块,预安装了许多版本的python。我看到你正在使用Sublime Text,但为了得到这个,你不能使用Sublime Text Editor,因为它没有预先安装。常规Python可以从here下载。成功安装Python后,哪些指令在网站上,而不是打开名为IDLE的应用程序。打开IDLE后,转到文件 - 新文件,你应该得到一个新的黑屏以填充你的所有代码。在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的答案的主要原因是因为Tkinter几乎每个版本的Python都预装了。它也是一个简单的GUI制造商,但它确实有一些无法实现的功能。

TTK也是一个有用的小部件,它只是Themed Tkinter。 TTK附带来自Tkinter的11个小部件:Button,Checkbutton,Entry,Frame,Label,LabelFrame,Menubutton,PanedWindow,Radiobutton,Scale和Scrollbar TTK还配备了6个新的小部件:Combobox,Notebook,Progressbar,Separator,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")

您可以添加许多样式,只需将它们设置为小部件的自定义样式即可。它看起来非常有用。我将在说明中附加另一个网址。

答案 1 :(得分:0)

您正在使用哪个版本的Python,以及使用什么平台?

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

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

  1. 创建一个框架(用于建立窗口的边框)
  2. 在画面上添加画布(允许程序绘制控件) 在框架内)
  3. 创建代码来处理任何事件(代码可以是 单击按钮,调整框架大小,选择菜单后执行 选项等)。
  4. 这是一个非常基本的例子:

    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