目录
tkinter窗口设计的核心
tkinter模块和ttk模块。
tkinter窗口设计
tkinter窗口设计的核心
tkinter是使用python进行窗口视窗设计的模块,它是python的标准Tk GUI工具包接口,python默认安装了这个模块。
(python3 中,该模块更名为tkiner)
widget组件的分类
类型 | 包含组件 |
文本类 | Label:标签 Entry:单行文本组件 Text:多行文本组件 Spinbox::输入组件,列表菜单和单行文本框的组合体 Scale: 数字范围组件 |
按钮类 | Button Radiobutton:单选 Checkbutton: 多选 |
选择列表类组件 | ListBox:列表框 Scrollbar:滚动条 OptionMenu:下拉列表 Combobox:组合框 |
容器类 | Frame:框架组件 LableFrame:标签框架组件 Toplevel:顶层窗口 PaneWindow:窗口布局管理 Notebook:选项卡组件 |
会话类 | Message MessageBox |
菜单类 | Menu Toolbar Treeview |
进度条类 | ProgressBar |
widget的公共属性:
- foreground( fg):设置组件中文字的颜色
- background(bg):组件背景色
- width
- height
- anchor:文字在组件输出的位置(默认是center)
- padx,pady:组件的水平、垂直间距
- font。文字样式
- relief:边框样式
- cursor:鼠标悬停样式
文字样式的一些常用属性:
- size:文字大小
- family:字体
- weight:字体粗细
- slant:设置斜体
- underline:下划线
- overstrike:删除线
Demo:
Label(win
,text="This is a Test"
,fg="red"
,bg="black"
,width=40
,height=40
,anchor="nw"
,font="华文新魏 14 bold"
).pack(padx=20,pady=10)
widget的公共方法:
- config(): 为组件配置参数
- keys(): 获取组件的所有参数,并返回一个列表
lable=Lable(win,text="Exe")
lable.config(bg="red",fg="white")
tkinter模块和ttk模块。
ttk是tkinter中一个很重要的模块,相当于它的升级版,虽然tkinter中包含了很多模块,但是这些组件样式比较简单,然后就出现了ttk模块。
ttk包含了18个组件,(其中12个组件在tkinter中已经包含),特殊的几个为Combobox,Notebook,Progressbar,Separator,Sizegrip、TreeView。
嗯,tkinter使用的是windows的主题风格;ttk模块使用的是windows默认主题的风格。
导入:
from tkinter.ttk import *
如果希望用ttk模块中的组件样式覆盖tkinter的,可以用这样的方式:
from tkinter import *
from tkinter.ttk import *
Demo1:
from tkinter import *
win = Tk()
win.title('Name This Window')
btn=Button(win,text="Hello",font=14,relief="flat",bg="#00ff12").pack(pady=20)
win.mainloop()
Demo2:
from tkinter import *
from tkinter import ttk
from tkinter.ttk import *
root = Tk()
root.title('Name This Window')
style=Style() # 创建style对象,用于设置样式。
style.configure("TButton",font=12,relief="flat",background="#FF8933")
btn=ttk.Button(text="this is a Test",style="TButton").pack(pady=20)
root.mainloop()
tkinter窗口设计
tkinter的窗口,也被称为容器。创建窗口需要实例化Tk()方法,然后通过mainloop方法让程序进入等待与处理窗口事件,直到窗口关闭。
Demo1:
from tkinter import *
root = Tk()
root.title('Name This Window') # 设置标题
root.geometry("900x500") # 设置窗口大小
root.maxsize(width=1200,height=700) # 最大尺寸
root.config(bg="#FF9435") # 设置背景色
# root.resizable(False,False)
# root.iconbitmap
text=Label(root,text="This is a Demo").pack()
root.mainloop()
Demo2:
from tkinter import *
win=Tk()
win.title("Test")
win.configure(bg="#FFea90")
width,height=300,100
scrw,scrh=win.winfo_screenwidth(),win.winfo_screenheight()
x=(scrw-width)/2
y=(scrh-height)/2
win.geometry("%dx%d+%d+%d" % (width,height,x,y)) # 设置窗口的位置 (x和y,已右上角为原点的坐标系)
win.mainloop()