进击RDC的第一天(3.21)

关于考核:

自己大致梳理了一下考核任务的难点,希望在之后的三星期内一点点攻破。
复制代码
  • 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()
复制代码

转载于:https://juejin.im/post/5c93a2bcf265da611b1ed0e3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值