与Tkinter和wxPython一起玩了一下,我觉得Tkinter在源代码的外观方面要好得多.但是,它似乎没有那么多功能; 特别是它没有标签(如Firefox窗口顶部的标签).
关于这个主题的一点点Google搜索提供了一些建议.有一个类的食谱条目允许你使用标签,但它非常原始.在SourceForge上还有Python megawidgets,虽然这看起来很旧并且在安装过程中给了我错误.
有没有人有经验在Tkinter中制作标签式GUI?你用了什么?或者只是需要更强大的窗口组件的人必须使用wxPython?
在最近的Python(> 2.7)版本中,您可以使用该ttk
模块,该模块提供对已引入的Tk主题窗口小部件集的访问Tk 8.5
.
以下是ttk
在Python 2中导入的方式:
import ttk help(ttk.Notebook)
在Python 3中,该ttk
模块附带标准发行版作为子模块tkinter
.
这是一个基于TkDocs
网站示例的简单工作示例:
from tkinter import ttk import tkinter as tk from tkinter.scrolledtext import ScrolledText def demo(): root = tk.Tk() root.title("ttk.Notebook") nb = ttk.Notebook(root) # adding Frames as pages for the ttk.Notebook # first page, which would get widgets gridded into it page1 = ttk.Frame(nb) # second page page2 = ttk.Frame(nb) text = ScrolledText(page2) text.pack(expand=1, fill="both") nb.add(page1, text='One') nb.add(page2, text='Two') nb.pack(expand=1, fill="both") root.mainloop() if __name__ == "__main__": demo()
另一种方法是使用库中的NoteBook
小部件tkinter.tix
.要使用tkinter.tix
,您必须Tix
安装小部件,通常与小部件的安装一起安装Tk
.要测试您的安装,请尝试以下操作:
from tkinter import tix root = tix.Tk() root.tk.eval('package require Tix')
有关详细信息,请访问PSF网站上的此网页.
请注意,这tix
是相当陈旧且不受支持的,因此您最好的选择可能就是去ttk.Notebook
.
如果有人还在寻找,我在tkinter中将其作为Tab工作.使用代码来使其按照您想要的方式运行(例如,您可以添加按钮以添加新选项卡):
from tkinter import * class Tabs(Frame): """Tabs for testgen output""" def __init__(self, parent): super(Tabs, self).__init__() self.parent = parent self.columnconfigure(10, weight=1) self.rowconfigure(3, weight=1) self.curtab = None self.tabs = {} self.addTab() self.pack(fill=BOTH, expand=1, padx=5, pady=5) def addTab(self): tabslen = len(self.tabs) if tabslen < 10: tab = {} btn = Button(self, text="Tab "+str(tabslen), command=lambda: self.raiseTab(tabslen)) btn.grid(row=0, column=tabslen, sticky=W+E) textbox = Text(self.parent) textbox.grid(row=1, column=0, columnspan=10, rowspan=2, sticky=W+E+N+S, in_=self) # Y axis scroll bar scrollby = Scrollbar(self, command=textbox.yview) scrollby.grid(row=7, column=5, rowspan=2, columnspan=1, sticky=N+S+E) textbox['yscrollcommand'] = scrollby.set tab['id']=tabslen tab['btn']=btn tab['txtbx']=textbox self.tabs[tabslen] = tab self.raiseTab(tabslen) def raiseTab(self, tabid): print(tabid) print("curtab"+str(self.curtab)) if self.curtab!= None and self.curtab != tabid and len(self.tabs)>1: self.tabs[tabid]['txtbx'].lift(self) self.tabs[self.curtab]['txtbx'].lower(self) self.curtab = tabid def main(): root = Tk() root.geometry("600x450+300+300") t = Tabs(root) t.addTab() root.mainloop() if __name__ == '__main__': main()