今天学了:
一.布局管理器(二):grid
- 1.按行/列形式排列组件,是三个布局管理器中最灵活多变的
- 2.使用 grid 排列组件,只需告诉它你想要将组件放置的位置(行/列,row 选项指定行,cloumn 选项指定列)。此外,你并不用提前指出网格(grid 分布给组件的位置称为网格)的尺寸,因为管理器会自动计算。
import tkinter as tk
root = tk.Tk()
# column 默认值是 0
tk.Label(root, text="用户名").grid(row=0)
tk.Label(root, text="密码").grid(row=1)
tk.Entry(root).grid(row=0, column=1)
tk.Entry(root, show="*").grid(row=1, column=1)
root.mainloop()
复制代码
- 3.默认情况下组件会居中显示在对应的网格里,你可以使用 sticky 选项来修改这一特性。该选项可以使用的值有 "e","w","s","n"(ewsn 分别表示东西南北,即上北下南左西右东)以及它们的组合。因此,我们可以通过 sticky = "w" 使得 Label 左对齐
tk.Label(root, text="用户名").grid(row=0, sticky="w")
tk.Label(root, text="密码").grid(row=1, sticky="w")
复制代码
- 4.若需要多个网格来放置一个组件,只需要指定 rowspan 和 columnspan 就可以实现跨行和跨列的功能。
import tkinter as tk
root = tk.Tk()
# column 默认值是 0
tk.Label(root, text="用户名").grid(row=0, sticky="w")
tk.Label(root, text="密码").grid(row=1, sticky="w")
tk.Entry(root).grid(row=0, column=1)
tk.Entry(root, show="*").grid(row=1, column=1)
photo = tk.PhotoImage(file="logo.gif")
tk.Label(root, image=photo).grid(row=0, column=2, rowspan=2, padx=5, pady=5) #rowspan=2 跨两行
tk.Button(text="提交", width=10).grid(row=2, columnspan=3, pady=5) #columnspan=3 跨三列
root.mainloop()
复制代码
二.组件(八):Text
- 1.主要目的是显示多行文本,但它常常也被用于作为简单的文本编辑器和网页浏览器使用
- 2.当你创建一个 Text组件的时候,它里边是没有内容的。为了给其插入内容,可以使用 insert() 方法以及 "insert" 或 "end" 索引号
import tkinter as tk
root=tk.Tk()
text=tk.Text(root)
text.pack()
text.insert('insert','我要进')
text.insert('end','研发中心')
root.mainloop()
复制代码
- 3.insert() 方法有一个可选的参数,用于指定一个或多个“标签”
import tkinter as tk
root=tk.Tk()
text=tk.Text(root,width=20,height=5)
text.pack()
text.tag_config('tag_1',backgroun='yellow',foreground='red') #注意属性
text.insert('insert','我要进')
text.insert('end','研发中心','tag_1')
root.mainloop()
复制代码
- 4.在 Text 组件中插入对象,可以使用 window_create() 和 image_create() 方法
import tkinter as tk
root=tk.Tk()
text=tk.Text(root,width=15,height=5)
text.pack()
text.insert('insert','我要进研发中心')
def func():
print('研发中心欢迎你')
b=tk.Button(root,text='点我',command=func)
text.window_create('insert',window=b)
root.mainloop()
复制代码
关于tkinter的内容暂时先学到这里,制作QQ音乐下载器过程中遇到问题再接着学,下面将开始学习Mysql数据库相关的内容。
关于SQL语句:
- 1.SELECT VS SELECT DISTINCT:
SELCT的语法结构:
SELECT column_name,column_name
FROM table_name
SELECT DISTINCT的语法结构:
SELECT DISTINCT column_name,column_name
FROM table_name;
复制代码
-
用法基本相同,只是在效果上,SELECT选取所选列的所有数据,SELECT DISTINCT选择所选列中无重复的数据(相当于SELECT添加了去重效果)
-
2.WHERE:
WHERE的语法结构:
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
复制代码
WHERE可实现过滤数据的功能,WHERE子句中可使用:
-
①比较运算符:= > < >= ,<=, !=,<> 表示(不等于);
-
②逻辑运算符:NOT AND OR(优先级递减);
-
③特殊运算符:is null,between and,in,like(后面再详解)
-
3.ORDER BY:
ORDER BY的语法结构
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;
复制代码
- 默认按照升序排列,若想按照降序排列可以使用DESC关键字。
- 也可以按照多列排序,注意这个例子:
-
a:先将country值这一列排序,同为CN的排前面,同属USA的排后面;
-
b:然后在同属CN的这些多行数据中,再根据alexa值的大小排列。
-
c:ORDER BY 排列时,不写明ASC DESC的时候,默认是ASC。
-
注意desc 或者 asc只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序。比如:
- 4.INSERT INTO:
INSERT INTO 语法结构:
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可,此时需要列出插入行的每一列数据:
INSERT INTO table_name VALUES (value1,value2,value3,...);
第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
复制代码
- 5.UPDATE:
UPDATE 语法结构:
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
复制代码
-
注意要与WHERE搭配使用,如果省略了 WHERE 子句,所有的记录都将被更新
-
6.DELETE:
DELETE 语法结构:
DELETE FROM table_name
WHERE some_column=some_value;
复制代码
- 注意要与WHERE搭配使用,如果省略了 WHERE 子句,所有的记录都将被删除
- 区别:
- delete:删除表的内容,表的结构还存在,不释放空间,可以回滚恢复;
- drop:删除表内容和结构,释放空间,没有备份表之前要慎用;
- truncate:删除表的内容,表的结构存在,可以释放空间,没有备份表之前要慎用;