下面是Python GUI利用tkinter皮肤ttkbootstrap实现好看的窗口的攻略。
简介
tkinter
是Python自带的GUI编程工具包,可以用来创建桌面应用程序。然而,tkinter
默认的界面很简陋,不太美观。要让界面看起来更加漂亮,我们可以使用ttkbootstrap
皮肤。ttkbootstrap
是一款基于Bootstrap
的tkinter
皮肤,可以让tkinter
应用程序的界面变得更加美观。本篇攻略将介绍如何使用ttkbootstrap
皮肤来创建漂亮的tkinter
窗口。
准备工作
在开始之前,我们需要先安装ttkbootstrap
。可以使用pip来安装,打开命令行界面执行以下命令即可:
pip install ttkbootstrap
安装完成后,我们就可以开始使用ttkbootstrap
了。
背景知识
在使用ttkbootstrap
之前,我们需要了解一些tkinter
的基本用法。
创建窗口
创建一个简单的窗口很简单,只需要导入tkinter
模块,创建一个Tk
对象,然后调用它的mainloop
方法就可以了。
import tkinter as tk
# 创建一个根窗口
root = tk.Tk()
# 进入事件循环
root.mainloop()
布局
tkinter
提供了多种布局方式。常用的是pack
、grid
和place
三种方法。其中,pack
是自动布局方法,最简单也是最常用的方法,但是它只能实现简单的布局。grid
可以实现更为复杂的布局。place
方法用于手动指定控件的位置和大小,不常用。
# pack布局
tk.Label(root, text="Hello, World!").pack()
# grid布局
tk.Label(root, text="Username").grid(row=0, column=0)
tk.Entry(root).grid(row=0, column=1)
控件
tkinter
提供了多种控件,我们常用的有Label
、Entry
、Button
、CheckBox
、RadioButton
等。这些控件的用法都类似,只需要创建一个控件对象,然后调用它的相应方法或属性即可。
# 创建Label控件
tk.Label(root, text="Hello, World!").pack()
# 创建Entry控件
tk.Entry(root).pack()
# 创建Button控件
tk.Button(root, text="Click me!").pack()
使用ttkbootstrap
有了上述的背景知识之后,我们就可以开始使用ttkbootstrap
来美化tkinter
界面了。ttkbootstrap
提供了多种样式,可以通过设置不同的主题来实现不同的美化效果。
导入ttkbootstrap
要使用ttkbootstrap
,我们首先需要从ttkbootstrap
中导入BootstrapTheme
类,并创建一个主题对象。
from ttkbootstrap import BootstrapTheme
# 创建一个主题对象
theme = BootstrapTheme()
创建窗口
创建一个ttkbootstrap
窗口与创建一个普通的tkinter
窗口类似,只需要导入ttkbootstrap
模块,创建一个Tk
对象,将主题对象作为参数传入即可。
from ttkbootstrap import BootstrapTheme
import tkinter as tk
# 创建主题对象
theme = BootstrapTheme()
# 创建一个窗口
root = tk.Tk(className="My Application")
# 将主题应用到窗口
theme.theme_use('flatly')
theme.configure(root)
# 进入事件循环
root.mainloop()
创建控件
创建ttkbootstrap
控件也与创建普通控件类似。只需要导入ttkbootstrap
中的控件类,然后将控件对象与主题对象一起使用即可。
from ttkbootstrap import Button
from ttkbootstrap import BootstrapTheme
import tkinter as tk
# 创建主题对象
theme = BootstrapTheme()
# 创建一个窗口
root = tk.Tk(className="My Application")
# 将主题应用到窗口
theme.theme_use('flatly')
theme.configure(root)
# 创建一个Button控件
Button(root, text="Click Me!", style='primary').pack()
# 进入事件循环
root.mainloop()
示例
下面介绍两个使用ttkbootstrap
创建美化窗口的示例。
示例1:登录窗口
from ttkbootstrap import Button
from ttkbootstrap import BootstrapTheme
from ttkbootstrap import Entry
import tkinter as tk
# 创建主题对象
theme = BootstrapTheme()
# 创建一个窗口
root = tk.Tk(className="Login Window")
# 将主题应用到窗口
theme.theme_use('flatly')
theme.configure(root)
# 创建Label控件
tk.Label(root, text="Username", font=("Arial", 12)).pack()
# 创建Entry控件
Entry(root, font=("Arial", 12)).pack()
# 创建Label控件
tk.Label(root, text="Password", font=("Arial", 12)).pack()
# 创建Entry控件
Entry(root, show="*", font=("Arial", 12)).pack()
# 创建Button控件
Button(root, text="Login", style='primary').pack()
# 进入事件循环
root.mainloop()
示例2:计算器
from ttkbootstrap import Button
from ttkbootstrap import BootstrapTheme
from ttkbootstrap import Entry
import tkinter as tk
# 创建主题对象
theme = BootstrapTheme()
# 创建一个窗口
root = tk.Tk(className="Calculator")
# 将主题应用到窗口
theme.theme_use('flatly')
theme.configure(root)
# 创建Entry控件
entry = Entry(root, font=("Arial", 12))
entry.pack()
# 清空Entry内容
def clear():
entry.delete(0, tk.END)
# 在Entry中插入字符
def insert(symbol):
entry.insert(tk.END, symbol)
# 计算结果
def calculate():
result = eval(entry.get())
entry.delete(0, tk.END)
entry.insert(0, result)
# 创建Button控件
Button(root, text="7", style='outline', command=lambda: insert("7")).grid(row=1, column=0)
Button(root, text="8", style='outline', command=lambda: insert("8")).grid(row=1, column=1)
Button(root, text="9", style='outline', command=lambda: insert("9")).grid(row=1, column=2)
Button(root, text="+", style='outline', command=lambda: insert("+")).grid(row=1, column=3)
Button(root, text="4", style='outline', command=lambda: insert("4")).grid(row=2, column=0)
Button(root, text="5", style='outline', command=lambda: insert("5")).grid(row=2, column=1)
Button(root, text="6", style='outline', command=lambda: insert("6")).grid(row=2, column=2)
Button(root, text="-", style='outline', command=lambda: insert("-")).grid(row=2, column=3)
Button(root, text="1", style='outline', command=lambda: insert("1")).grid(row=3, column=0)
Button(root, text="2", style='outline', command=lambda: insert("2")).grid(row=3, column=1)
Button(root, text="3", style='outline', command=lambda: insert("3")).grid(row=3, column=2)
Button(root, text="*", style='outline', command=lambda: insert("*")).grid(row=3, column=3)
Button(root, text="0", style='outline', command=lambda: insert("0")).grid(row=4, column=0)
Button(root, text=".", style='outline', command=lambda: insert(".")).grid(row=4, column=1)
Button(root, text="C", style='outline', command=clear).grid(row=4, column=2)
Button(root, text="/", style='outline', command=lambda: insert("/")).grid(row=4, column=3)
Button(root, text="=", style='primary', colspan=4, command=calculate).grid(row=5, column=0)
# 进入事件循环
root.mainloop()
结语
使用ttkbootstrap
可以为tkinter
应用程序提供美观的界面。本篇攻略介绍了ttkbootstrap
的基本用法,并给出了两个使用ttkbootstrap
的示例。读者可以根据自己的需求来选择不同的主题、创建不同的控件、布局不同的界面来实现自己的tkinter
应用程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python GUI利用tkinter皮肤ttkbootstrap实现好看的窗口 - Python技术站