关于考核:
自己大致梳理了一下考核任务的难点,希望在之后的三星期内一点点攻破。
复制代码
- 1.输入歌曲名,先在数据库中检测该歌曲是否存在。若不存在,根据歌名曲返回搜索结果列表(暂定前两页),并显示在tkinter制作的页面上
- 2.选择单曲下载/批量下载,获取下载链接后开始下载
- 3.将下载结果按歌名-歌手-id的格式存储在数据库中
今天学了:
一.布局管理器(一):pack
- 1.按添加顺序排列组件,使用于少量组件的排列,与其他两个布局管理器相同,均用于管理同一个父组件下的所有组件的布局,但注意不要在同一个父组件中混用pack和grid
- 2.默认下,pack将添加的组件依次纵向排列
import tkinter as tk
root=tk.Tk()
tk.Label(root,text='Red',bg='red',fg='white').pack(fill='x')
tk.Label(root,text='Green',bg='green',fg='black').pack(fill='x')
tk.Label(root,text='Blue',bg='blue',fg='white').pack(fill='x')
root.mainloop()
复制代码
- 3.若要将组件横向排列,设置side选项
import tkinter as tk
root=tk.Tk()
tk.Label(root,text='Red',bg='red',fg='white').pack(side='right')
tk.Label(root,text='Green',bg='green',fg='black').pack(side='right')
tk.Label(root,text='Blue',bg='blue',fg='white').pack(side='right')
root.mainloop()
复制代码
二.组件(一):Label
- 1.Label组件用于显示文字或图像,仅能显示单一字体的文本,但文本可以跨越多行
- 2.若不指定大小,那么Label的尺寸是正好容纳内容而已
import tkinter as tk
root=tk.Tk()
w=tk.Label(root,text='你好,RDC',fg='green').pack()
root.mainloop()
复制代码
- 3.显示多行文字:
import tkinter as tk
root=tk.Tk()
longtext = """
Label 可以显示多行文本,你可以直接使用换行符
或使用 wraplength 选项来实现。当文本换行的时
候,你可以使用 anchor 和 justify 选项来使得
文本如你所希望的显示出来。
"""
w=tk.Label(root,text=longtext,anchor="w",justify='left').pack()
root.mainloop()
复制代码
- 4.可以显示Tkinter变量的内容
import tkinter as tk
root=tk.Tk()
v=tk.StringVar()
w=tk.Label(root,textvariable=v).pack()
v.set('Hello RDC')
root.mainloop()
复制代码
(二).Button:
- 1.Button 组件可以包含文本或图像,你可以将一个 Python 的函数或方法与之相关联,当按钮被按下时,对应的函数或方法将被自动执行。Button 组件仅能显示单一字体的文本,但文本可以跨越多行
- 2.关联函数:
import tkinter as tk
root=tk.Tk()
def func():
print('Hello RDC')
b=tk.Button(root,text='执行',command=func).pack()
root.mainloop()
复制代码
- 3.多行文本用法同Label
- 4.为了使按钮被点击时有凹下效果,可以设置设置:
b.config(relief="raised")
复制代码
三.Checkbutton:
- 1.用于实现二选一的按钮。Checkbutton 组件可以包含文本或图像,你可以将一个 Python 的函数或方法与之相关联,当按钮被按下时,对应的函数或方法将被自动执行。Checkbutton 组件仅能显示单一字体的文本,但文本可以跨越多行。
- 2.使用 Checkbutton,你必须创建一个 Tkinter 变量用于存放按钮的状态
import tkinter as tk
root=tk.Tk()
var=tk.IntVar()
c=tk.Checkbutton(root,text='Hello RDC',variable=var).pack()
root.mainloop()
复制代码
- 3.默认情况下,variable 选项设置为 1 表示选中状态,反之设置为 0。你可以使用 onvalue 和 offvalue 选项修改它们的值,例如下边代码,只要 var 被设置为“T”即选中状态,设置为“F”则相反:
import tkinter as tk
root=tk.Tk()
var=tk.StringVar()
c=tk.Checkbutton(root,text='Hello RDC',variable=var,onvalue='T',offvalue='F').pack()
var.set('T')
root.mainloop()
复制代码
四.Radiobutton:
- 1.用于实现多选一的问题。Radiobutton 组件可以包含文本或图像,每一个按钮都可以与一个 Python 的函数或方法与之相关联,当按钮被按下时,对应的函数或方法将被自动执行。Radiobutton 组件仅能显示单一字体的文本,但文本可以跨越多行。
- 2.为了实现其“单选”行为,确保一组中的所有按钮的 variable 选项都使用同一个变量,并使用 value 选项来指定每个按钮代表什么值
import tkinter as tk
root=tk.Tk()
v=tk.IntVar()
def func():
print('Hello RDC')
tk.Radiobutton(root,text='one',variable=v,value=1,command=func).pack(anchor='w')
tk.Radiobutton(root,text='two',variable=v,value=2,command=func).pack(anchor='w')
tk.Radiobutton(root,text='three',variable=v,value=3,command=func).pack(anchor='w')
v.set(2)
root.mainloop()
复制代码
- 3.按钮选项较多时,用列表里面嵌套元组来迭代赋值:
import tkinter as tk
root=tk.Tk()
girls=[
("西施", 1),
("王昭君", 2),
("貂蝉", 3),
("杨玉环", 4)]
v=tk.IntVar()
for girl,num in girls:
b=tk.Radiobutton(root,text=girl,variable=v,value=num).pack(anchor='w')
root.mainloop()
复制代码
- 4.如果将indicatoron选项设置为False,Radiobutton变成普通按钮
五.Frame:
- 1.用于在复杂的布局中将其他组件分组,也用于填充间距和作为实现高级组件的基类
- 2.用于装饰界面
import tkinter as tk
root=tk.Tk()
tk.Label(text='天王盖地虎').pack()
separator=tk.Frame(height=2,bd=1,relief='sunken')
separator.pack(fill='x',padx=5,pady=5)
tk.Label(text='小鸡炖蘑菇').pack()
root.mainloop()
复制代码
六.LabelFrame:
- 1.用于为组件分组。默认情况下,LabelFrame会在其子组件的周围绘制一个边框以及一个标题。
- 2.实例:
import tkinter as tk
root=tk.Tk()
group=tk.LabelFrame(root,text='你从哪里知道RDC',padx=5,pady=5)
group.pack(padx=10,pady=10)
v=tk.IntVar()
r1=tk.Radiobutton(group,text='同学介绍',variable=v,value=1).pack(anchor='w')
r1=tk.Radiobutton(group,text='老师介绍',variable=v,value=2).pack(anchor='w')
root.mainloop()
复制代码
七.Entry:
- 1.用于获取用户的输入文本
- 2.添加文本用insert() 方法,删除文本用delete() 方法,获取文本用get() 方法,索引号"end":对应已存在文本的后一个位置,"insert":对应插入光标的当前位置
import tkinter as tk
root=tk.Tk()
e=tk.Entry(root)
e.pack(padx=20,pady=20)
e.delete(0,'end') #实现删除输入框所有内容
e.insert(0,'请输入内容')
print(e.get())
root.mainloop()
复制代码
- 3.可以绑定 Entry 组件到 Tkinter 变量(StringVar),并通过该变量设置和获取输入框的文本:
import tkinter as tk
root=tk.Tk()
v=tk.StringVar()
e=tk.Entry(root,textvariable=v)
e.pack()
v.set('我要进RDC')
print(v.get())
root.mainloop()
复制代码
- 4.实例:将 Entry 组件和 Button 组件配合,点击 “获取信息” 按钮时自动清空输入框并将内容输出:
import tkinter as tk
root=tk.Tk()
tk.Label(root,text='姓名').grid(row=0)
tk.Label(root,text='工作室').grid(row=1)
e1=tk.Entry(root)
e2=tk.Entry(root)
e1.grid(row=0,column=1,padx=10,pady=5)
e2.grid(row=1,column=1,padx=10,pady=5)
def func():
print('{}要加入{}工作室'.format(e1.get(),e2.get()))
e1.delete(0,'end')
e2.delete(0,'end')
tk.Button(root,text='获取信息',width=10,command=func).grid(row=3,column=0,sticky='w',padx=10,pady=5)
tk.Button(root,text='退出',width=10,command=root.quit).grid(row=3,column=1,sticky='e',padx=10,pady=5)
root.mainloop()
复制代码