# -*- coding:utf-8 -*-
import tkinter as tk
创建主窗口
# 调用Tk()创建主窗口
root_window =tk.Tk()
窗口名字
# 给主窗口起一个名字,也就是窗口的名字
root_window.title('C语言中文网:c.biancheng.net')
打开窗口
#开启主循环,让窗口处于显示状态
root_window.mainloop()
创建标签之后,需要使用 pack 方法放在主窗口内部
# 将标签对象放置在主窗口内
text.pack()
按钮同理
# 添加按钮
button=tk.Button(root_window,text="关闭",command=root_window.quit)
# 这里将按钮放置在主窗口的底部
button.pack(side="bottom")
基本案例
import tkinter as tk
# 定义窗口
window = tk.Tk()
window.title('c语言中文网')
window.geometry('300x300')
window.iconbitmap('C:/Users/Administrator/Desktop/favicon.ico')
# 定义回调函数
def callback():
print("执行回调函数","C语言中文网欢迎您")
# 点击执行按钮
button = tk.Button(window, text="执行", command=callback)
button.pack()
window.mainloop()
窗口位置
居中
import tkinter as tk
window = tk.Tk()
window.title('c语言中文网')
window.iconbitmap('C:/Users/Administrator/Desktop/favicon.ico')
# 设置窗口大小变量
width = 300
height = 300
# 窗口居中,获取屏幕尺寸以计算布局参数,使窗口居屏幕中央
screenwidth = window.winfo_screenwidth()
screenheight = window.winfo_screenheight()
size_geo = '%dx%d+%d+%d' % (width, height, (screenwidth-width)/2, (screenheight-height)/2)
window.geometry(size_geo)
window.mainloop()
Label设置
label = tk.Label(win, text="网址:c.biancheng.net",font=('宋体',20, 'bold italic'),bg="#7CCD7C",
# 设置标签内容区大小
width=30,height=5,
# 设置填充区距离、边框宽度和其样式(凹陷式)
padx=10, pady=15, borderwidth=10, relief="sunken")
按钮设置
# 设置回调函数
def callback():
print ("click me!")
# 使用按钮控件调用函数
b = tk.Button(window, text="点击执行回调函数", command=callback).pack()
# 显示窗口
这里的button.pack(),直接写在了 b 后面 .pack()
消息对话框控件
def click_button():
# 使用消息对话框控件,showinfo()表示温馨提示
messagebox.showinfo(title='温馨提示', message='欢迎使用C语言中文网')
# 点击按钮时执行的函数
button = tk.Button(window,text='点击前往',bg='#7CCD7C',width=20, height=5,command=click_button).pack()
showinfo()表示温馨提示
messagebox消息对话框
案例设置登陆退出窗口
win.resizable(0,0) # 禁止调整窗口大小
# 放置文字标签分别布置在第一行、第二行
tk.Label(win, text="账号:").grid(row=0, column=0)
tk.Label(win, text="密码:").grid(row=1, column=0)
# 创建输入框控件
e1 = tk.Entry(win)
# 以 * 的形式显示密码
e2 = tk.Entry(win,show='*')
e1.grid(row=0, column=1, padx=10, pady=5) # padx和pady是控制控件周围的空白区域
e2.grid(row=1, column=1, padx=10, pady=5)
# 编写一个简单的回调函数
def login():
messagebox.showinfo('欢迎您到来')
# 使用 grid()的函数来布局,并控制按钮的显示位置
tk.Button(win, text="登录", width=10, command=login).grid(row=3, column=0, sticky="w", padx=10, pady=5)
tk.Button(win, text="退出", width=10, command=win.quit).grid(row=3, column=1, sticky="e", padx=10, pady=5)
win.mainloop()
Entry 控件
允许用户输入内容,从而实现 GUI 程序与用户的交互
Text 文本控件
text = Text(win, width=50, height=20, undo=True, autoseparators=False)
text.grid(row=4)
# INSERT 光标处插入;END 末尾处插入
text.insert(INSERT, 'C语言中文网,一个有温度的网站')
# 定义撤销和恢复方法,调用edit_undo()和 edit_redo()方法
def backout():
text.edit_undo()
def regain():
text.edit_redo()
# 定义撤销和恢复按钮
Button(win,text = '撤销',command = backout).grid(row=3, column=0, sticky="w", padx=10, pady=5)
Button(win,text = '恢复',command = regain).grid(row=3, column=0, sticky="e", padx=10, pady=5)
win.mainloop()
校园网数据库拼接
result_list = []
def display_accounts():
cursor.execute("SELECT * FROM 用户 ORDER BY 剩余流量 DESC") # 按剩余流量从大到小排序
rows = cursor.fetchall()
for row in rows:
# 把所有的按照格式拼接好,放到列表中
account_info = f"账户: {row[0]} 密码: {row[1]} 剩余流量: {row[2]}"
print(account_info)
# 将每一行的信息追加到主列表
result_list.append(account_info)
return result_list # 返回提取的所有账户信息
渲染到列表
# 创建主窗口
win = Tk()
win.geometry('400x500')
# 创建列表选项,并设置列表宽度
listbox =Listbox(win,width=400)
listbox.pack()
# i表示索引值,item 表示值,根据索引值的位置依次插入
for i,item in enumerate(display_accounts()):
print(i,item)
listbox.insert(i,item)
Listbox控件案例
1、创建Listbox,然后传入变量
var2 = tk.StringVar()
var2.set(("C语言辅导班", "Python答疑辅导", "Java答疑辅导", "C++辅导"))
2、建一个序列,然后将值循环添加到Listbox控件中
# 新建一个序列,然后将值循环添加到Listbox控件中
items = ["C", "Java", "Python", "C#", "Golang", "Runby"]
for i in items:
lb.insert('end', i) # 从最后一个位置开始加入值
3、创建按钮放置,按钮调用print_selection函数
b1 = tk.Button(window, text='获取当前选项', command=click_button)
b1.pack()
4、点击函数click_button
val = lb.get(lb.curselection()) # 获取当前选中的文本
var1.set(val) # 把选中的值放入var1中
# 创建一个按钮的点击事件
def click_button():
# 使用 curselection来选中文本
try:
val = lb.get(lb.curselection()) # 获取当前选中的文本
# 设置label值
var1.set(val)
except Exception as e:
e = '发现一个错误'
messagebox.showwarning(e,'没有选择任何条目')
实例
1、设置校园网数据库
# 连接到数据库
conn = sqlite3.connect('/Users/dcl/Desktop/demo/Mine/校园网/data.db')
cursor = conn.cursor()
result_list = []
def display_accounts():
cursor.execute("SELECT * FROM 用户 ORDER BY 剩余流量 DESC") # 按剩余流量从大到小排序
rows = cursor.fetchall()
for row in rows:
# 把所有的按照格式拼接好,放到列表中
account_info = f"账户: {row[0]} 密码: {row[1]} 剩余流量: {row[2]}"
print(account_info)
# 将每一行的信息追加到主列表
result_list.append(account_info)
return result_list # 返回提取的所有账户信息
2、创建列表 listbox
listbox = tk.Listbox(window,width=400)
listbox.pack()
3、选中数据追加到列表
# i表示索引值,item 表示值,根据索引值的位置依次插入
for i,item in enumerate(display_accounts()):
print(i,item)
listbox.insert(i,item)
4、接收鼠标点击的具体选项内容
# 创建变量,用var1用来接收鼠标点击的具体选项内容
var1 = tk.StringVar()
l = tk.Label(window, bg='#B0B0B0', font=('微软雅黑', 15), width=50, textvariable=var1)
l.pack()
5、点击动作函数
# 创建一个按钮的点击事件
def click_button():
# 使用 curselection来选中文本
try:
val = listbox.get(listbox.curselection()) # 获取当前选中的文本
# 设置label值
var1.set(val) # 把选中的值放入var1中
except Exception as e:
e = '发现一个错误'
messagebox.showwarning(e,'没有选择任何条目')
特别是:val = listbox.get(listbox.curselection()) # 获取当前选中的文本
6、创建按钮放置
# 创建一个按钮并放置,点击按钮调用print_selection函数
b1 = tk.Button(window, text='获取当前选项', command=click_button)
b1.pack()
#主窗显示
window.mainloop()
标签:Python,text,Gui,window,tk,win,tkinker,button,row
From: https://www.cnblogs.com/sxdtx/p/17894720.html