Eli*_*ght 18 python tabs wxpython tkinter
与Tkinter和wxPython一起玩了一下,我觉得Tkinter在源代码的外观方面要好得多.但是,它似乎没有那么多功能; 特别是它没有标签(如Firefox窗口顶部的标签).
关于这个主题的一点点Google搜索提供了一些建议.有一个类的食谱条目允许你使用标签,但它非常原始.在SourceForge上还有Python megawidgets,虽然这看起来很旧并且在安装过程中给了我错误.
有没有人有经验在Tkinter中制作标签式GUI?你用了什么?或者只是需要更强大的窗口组件的人必须使用wxPython?
tzo*_*zot 22
在最近的Python(> 2.7)版本中,您可以使用该ttk模块,该模块提供对已引入的Tk主题窗口小部件集的访问Tk 8.5.
以下是ttk在Python 2中导入的方式:
import ttk
help(ttk.Notebook)
Run Code Online (Sandbox Code Playgroud)
在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()
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用库中的NoteBook小部件tkinter.tix.要使用tkinter.tix,您必须Tix安装小部件,通常与小部件的安装一起安装Tk.要测试您的安装,请尝试以下操作:
from tkinter import tix
root = tix.Tk()
root.tk.eval('package require Tix')
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请访问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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39637 次 |
| 最近记录: |