使用单独的文本文件创建简单Tkinter gui的包
simpleTk的Python项目详细描述
simpletk
使用单独的文本文件创建简单tkinter gui的包
说明
simpletk是一个类,它用合适的语法解释文本文件 给一个Tkinter图形用户界面(就像Kivy一样)。
实施
导入
fromtkinterimport*fromSimpleTkimportSimpleTk
初始化
root=Tk()stk=SimpleTk(root,"project/testGUI.stk")# "gui.stk" is the standard value root.mainloop()
更改小部件属性
stk.buttonName1["text"]="I'm a button"stk.frameName1.bind("<Button-1>",lambdae:print("Click Event"))
文件语法
stk.buttonName1["text"]="I'm a button"stk.frameName1.bind("<Button-1>",lambdae:print("Click Event"))
文件语法
在附加的文本文件中,必须注意特定的语法。 当前版本仍然对错误敏感。
要点:
- 使用
tab
缩进子窗口小部件 - 行的末尾或中间没有
tabs
command
无法添加到小部件属性(必须在程序代码中随后添加)- 没有这些括号的行将使用pack geometry manager放置子窗口小部件
- 使用
..
在字符串参数中键入空格(更好的解决方案正在使用) - 使用
>
您可以使用此行键入纯python代码(例如,调用小部件上的方法) - 使用
#
从这一点注释掉行
示例:
- 概述:
Widget-Class: WidgetName(Properties){Columns}
- 示例:
Label: label1(text="This is a label", bg="lightblue"){3}
要定义一个childwidget,只需在父widget下将这一行缩进一行。
样式
您可以为特定的小部件预定义参数:
示例:
- 概述:
Style: WidgetName(Properties)
- 示例:
Style: Label(bg="lightgreen", fg="gold")
动机
simpletk是一个将基本的gui实现外包到外部文件中的机会。 更清晰、更结构化的语法。尤其是当你有一个巨大的设计或者你只是想测试 一些东西。
比较
tkinter:
frame1=Frame(root,bg="white")frame1.pack(padx=5,pady=5,expand=True,fill=BOTH)lf1=LabelFrame(frame1,text="Header",bg="gold")lf1.grid(row=0,column=0,padx=5,pady=5,sticky=N+S+E+W)label1=Label(lf1,text="My first GUI",bg="lightblue")label1.grid(row=0,column=0,padx=5,pady=5,sticky=N+S+E+W)button1=Button(lf1,text="This is a Button")button1.grid(row=0,column=1,padx=5,pady=5,sticky=N+S+E+W)entry1=Entry(lf1,bg="white")entry1.grid(row=1,column=0,padx=5,pady=5,sticky=N+S+E+W)lf2=LabelFrame(frame1,text="Footer",bg="gold")lf2.grid(row=1,column=0,padx=5,pady=5,sticky=N+S+E+W)label2=Label(lf2,text="Footer",bg="lightblue")label2.pack(padx=5,pady=5,expand=True,fill=BOTH)cb1=ttk.Combobox(lf2)cb1.pack(padx=5,pady=5,expand=True,fill=BOTH)cb1.set("Selection")
simpletk:
Style: Label(bg = "lightblue")
Style: LabelFrame(bg = "gold")
Frame: frame1 (bg = "white") {1}
LabelFrame: lf1 (text = "Header") {2}
Label: label1 (text = "My..first..GUI")
Button: button1 (text = "Thi..i..a..Button")
Entry: entry1 (bg = "white")
LabelFrame: lf2 (text = "Footer")
Label: label2 (text = "Footer")
ttk.Combobox: cb1 ()
> cb1.set("Selection")