-
pack()这个布局方式非常不友好,最后菜菜用了11个Frame互相嵌套 ↑
-
写了很多罗里吧嗦的字符串操作语句来保证这些输入框不会报错:
string.replace('需要替换的字符','new') string.strip('需要删去的首尾字符') string.split('分隔符',分割次数) string.isdigit() 判断输入的是否是纯数字 list=[str(i) for i in list0] 先把列表list0每一项都变为字符串 ''.join(list) 再把列表拼接为字符串
-
可以实时更新显示的Listbox和Label
x=tkinter.StringVar() tkinter.Listbox(self,listvariable=x).pack() x.set('更新的字符串')
-
获取、清除输入框Entry的内容:
entry.get() 或者在类外调用时须加名字前缀: app.entry.get() entry.delete(0,END) 或者在类外调用时须加名字前缀: app.entry.delete(0,END)
-
注意None和空字符并不等价~;
'+'.split('+') 的结果是 ['', '']
-
cursor.fetchone()和fetchall()返回的都是列表,列表中是元组,形如[(1, ‘a’, 13, 13), (2, ‘c’, 4, 4), (3, ‘a’, 2, 2)],如果没有查询到结果则会返回None;
-
复习了很多已经快忘光的sql语句:
group by, having count(*)>2, update, delete, insert or ignore, inner join
-
菜菜第一次写了400行的python……第一次用了global变量…还挺好用的… https://www.cnblogs.com/z360519549/p/5172020.html
这两篇…↑…↓…也不晓得谁是原作者了……
https://blog.youkuaiyun.com/qw_sunny/article/details/80972357
全部代码 ↓
import tkinter as tk
from tkinter.constants import * #这一行是为了方便pack()中的特殊字符输入,比如TOP,RIGHT,LEFT
import sqlite3
class Application(tk.Frame): # 继承自父类Frame
def __init__(self, master=None): # 初始化, master: 按钮的父容器
super().__init__(master)# 重写父类的初始化 https://blog.youkuaiyun.com/m0_37310097/article/details/75305015
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
#所有带格式条件的输入,最好增加一个报错机制
#所有带格式条件的输入,最好增加一个报错机制
#所有带格式条件的输入,最好增加一个报错机制 try,except
f1=tk.Frame(self)
f1.pack()
f2=tk.Frame(f1)
f2.pack(side=LEFT)
self.label1=tk.Label(f2,text='请输入课程ID(+课程内容):') #可引入时间,比如1a、1b、1c表示第一节课的上午班、下午班、晚班
# 允许不输入课程内容
self.label1.pack(anchor=W)
self.course = tk.Entry(f2)
self.course.pack(anchor=W)
tk.Message(f2,text='↑可单独录入课程信息',fg='#808080',width=250).pack(anchor=W)
self.label2=tk.Label(f2,text='请输入出席学生ID:空格相隔') #在屏幕上显示学生名单(ID-名字),方便老师输入ID而非名字
#如果有第一次来试听的学生,请先在add输入框内为他分配ID和1个课时
#允许不输入出席学生ID,这样的话就只更新课程信息
#如果要删除某个学生的某次出勤记录,则输入负的学生ID,但每次只能输入一个
self.label2.pack(anchor=W)
self.attendee = tk.Entry(f2)
self.attendee.pack(anchor=W)
f3=tk.Frame(f1)
f3.pack(side=LEFT,padx=20)
self.record=tk.Button(f3,text=' 记录 ',command=record_db)
self.record.pack(side=LEFT)
f4=tk.Frame(self)
f4.pack()
tk.Message(f4,text='*如果要删除某个学生某次出勤记录,则输入负的学生ID,但每次只能输入一个ID,eg.-1',fg='#808080',width=250).pack(anchor=W)
f5=tk.Frame(self)
f5.pack(pady=20,ipadx=50)
f8=tk.Frame(f5)
f8.pack(side=BOTTOM,anchor=E)
f6=tk.Frame(f5)
f6.pack(side=LEFT)
self.label3=tk.Label(f6,text='请输入某个学生的ID:') #在屏幕上显示学生名单(ID-名字),方便老师输入ID而非名字
self.label3.pack()
self.astudent=tk.Entry(f6)
self.astudent.pack()
self.consultStu = tk.Button(f6)
self.consultStu["text"] = " 查询学生出勤记录 "
self.consultStu["command"] = consultStu
self.consultStu.pack(pady=5)
f7=tk.Frame(f5)
f7.pack(side=RIGHT)
self.label4=tk.Label(f7,text='请输入某节课程的ID:') #在屏幕上显示课程列表(ID-内容),方便老师输入ID
self.label4