出现一个界面,点击一下按钮,标签上的东西会变成“you hit me”,再按一下,则会变回原样
import tkinter as tk
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('200x100') # 长和宽
var = tk.StringVar() # tk里面的字符串变量
l = tk.Label(window, textvariable=var, # 在window上面的Label, text是文字, textvariable是文字变量
bg='green', font=('Arial', 12), width=15, # 背景颜色, 字体及大小,
height=2) # 长和宽
l.pack() # 是一种安置方式
# l.place() : 也是一种安置方式
on_hit = False # 先设置没有点击
def hit_me(): # 点击函数
global on_hit # 全局变量
if not on_hit:
on_hit = True
var.set('you hit me') # 修改字符串变量
else:
on_hit = False
var.set(" ")
b = tk.Button(window, text='hit me', width=15, height=1, command=hit_me) # command是执行的功能
b.pack() # 一种安置方式
window.mainloop() # 可视化, 不断刷新
import tkinter as tk
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('200x200') # 长和宽
e = tk.Entry(window, show='*') # show表示输入的东西显示为*, 这是一个输入框
e.pack() # 放置位置
def insert_point():
var = e.get() # 得到输入框的内容
t.insert('insert', var) # insert表示插入光标所在地
def insert_end():
var = e.get()
t.insert('end', var) # end表示表示插入到末尾,这里也可以写插入要几行几列
# 1.1表示第一行第一列
b1 = tk.Button(window, text='insert point', width=15, height=1, command=insert_point) # command是执行的功能
b1.pack() # 一种安置方式
b2 = tk.Button(window, text='insert end', command=insert_end)
b2.pack()
t = tk.Text(window, height=2) # 一个文本框,高度为两个字的高度
t.pack()
window.mainloop() # 可视化, 不断刷新
import tkinter as tk
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('200x200') # 长和宽
var1 = tk.StringVar() # 一个字符变量
l = tk.Label(window, bg='yellow', width=4, textvariable=var1) # l是一个标签
l.pack()
def print_label(): # 一个将光标所在行的内容放到标签上的函数
value = lb.get(lb.curselection()) # 拿出来光标所选定的东西
var1.set(value) # 设置var1的内容
b1 = tk.Button(window, bg='green', text='print selection', width=15, height=1, command=print_label) # command是执行的功能
b1.pack() # 一种安置方式
var2 = tk.StringVar()
var2.set((11, 22, 33, 44))
lb = tk.Listbox(window, listvariable=var2, width=26, bg='cyan') # 是一个列表框,listvariable就是那个列表
list_items = [1, 2, 3, 4]
for item in list_items:
lb.insert('end', item) # 将list_items里面的值插入到列表框尾部
lb.insert(1, 'first') # 在第一位上插入first
lb.insert(2, 'second')
lb.delete(2) # 删除第二位的元素
lb.pack()
window.mainloop() # 可视化, 不断刷新
import tkinter as tk
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('200x200') # 长和宽
var = tk.StringVar() # 一个字符变量
l = tk.Label(window, bg='yellow', width=20, text='empty') # l是一个标签
l.pack()
def print_selection():
l.config(text='you have selected' + var.get()) # config是修改参数的函数
# 三个选择按钮
r1 = tk.Radiobutton(window, text='Option A', variable=var, value='A', command=print_selection) # 当你选择该选项时, var就会被赋值为A
r1.pack()
r2 = tk.Radiobutton(window, text='Option B', variable=var, value='B', command=print_selection) # 当你选择该选项时, var就会被赋值为B
r2.pack()
r3 = tk.Radiobutton(window, text='Option C', variable=var, value='C', command=print_selection) # 当你选择该选项时, var就会被赋值为C
r3.pack()
window.mainloop()
import tkinter as tk
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('200x200') # 长和宽
l = tk.Label(window, bg='yellow', width=20, text='empty') # l是一个标签
l.pack()
def print_selection(text):
l.config(text='you have selected' + text) # text是默认传入的参数, 是scale尺度的值
s = tk.Scale(window, label='try me', from_=5, to=11, orient=tk.HORIZONTAL, # from_ ,to : 从多少到多少的尺度, orient:选择是水平方向还是垂直方向, length是200像素的长度
length=200, showvalue=0, tickinterval=3, resolution=0.01, command=print_selection) # command表示执行的函数
s.pack() # showvalue 表示是否显示出来当前选择的尺度,0为不显示,1为显示 tickinterval表示隔几个数为一个刻度 , resolution表示显示的精度
window.mainloop()
import tkinter as tk
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('200x200') # 长和宽
l = tk.Label(window, bg='yellow', width=20, text='empty') # l是一个标签
l.pack()
def print_selection():
if (var1.get() == 1) & (var2.get()) == 0:
l.config(text='I only love Python')
elif (var1.get() == 0) & (var2.get() == 1):
l.config(text='I only love C++')
elif (var1.get() == 0) & (var2.get() == 0):
l.config(text='I do not love either')
else:
l.config(text='I love both')
var1 = tk.IntVar() # 整数形式的变量
var2 = tk.IntVar()
c1 = tk.Checkbutton(window, text='Python', variable=var1, onvalue=1, offvalue=0, # 选这个选择var1被赋值为1, 不选被赋值为0
command=print_selection)
c2 = tk.Checkbutton(window, text='C++', variable=var2, onvalue=1, offvalue=0,
command=print_selection)
c1.pack()
c2.pack()
window.mainloop()
import tkinter as tk
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('200x200') # 长和宽
l = tk.Label(window, text='', bg='yellow')
l.pack()
count = 0
def do_job():
global count
l.config(text='do' + str(count))
count += 1
menubar = tk.Menu(window) # 一个菜单栏
filemenu = tk.Menu(menubar, tearoff=0) # tearoff为1会增加一条分割线 这里理解为这两句(和下面一句)同时控制, 才把filemenu放到了menubar上
menubar.add_cascade(label='file', menu=filemenu) # 在munubar上面加上我所定义的filemenu, 起名为file
filemenu.add_command(label='New', command=do_job) # 在file中加入可选的选项, 功能
filemenu.add_command(label='Open', command=do_job)
filemenu.add_command(label='Save', command=do_job) # 都执行同样的功能
filemenu.add_separator() # 加一条分割线
filemenu.add_command(label='Exit', command=window.quit) # 关闭窗口
filemenu1 = tk.Menu(menubar, tearoff=0) # 菜单栏上面的选项
menubar.add_cascade(label='file1', menu=filemenu1) # 在munubar上面加上我所定义的filemenu, 起名为file
filemenu1.add_command(label='New', command=do_job) # 在file中加入可选的选项, 功能
filemenu1.add_command(label='Open', command=do_job)
filemenu1.add_command(label='Save', command=do_job) # 都执行同样的功能
filemenu1.add_separator() # 加一条分割线
filemenu1.add_command(label='Exit', command=window.quit) # 关闭窗口
filemenu2 = tk.Menu(filemenu1) # 同上述
filemenu1.add_cascade(label='import', menu=filemenu2)
filemenu2.add_command(label='filefile', command=do_job)
filemenu2.add_command(label='i love you', command=do_job)
window.config(menu=menubar)
window.mainloop()
import tkinter as tk
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('200x200') # 长和宽
tk.Label(window, text='on the window').pack() # 这个标签放在主界面上, pack就是一层层放下来
frm = tk.Frame(window) # 再生成一个窗口, 放在window上
frm.pack()
frm_l = tk.Frame(frm) # 再生成两个小窗口, 放在frm上
frm_r = tk.Frame(frm)
frm_l.pack(side='left') # side是设置方位, 这里是在在左边和右边
frm_r.pack(side='right')
tk.Label(frm_l, text='on the frm_l1').pack() # 将再成标签, 放在frm_l上, 再pack
tk.Label(frm_l, text='on the frm_l2').pack()
tk.Label(frm_r, text='on the frm_r1').pack()
window.mainloop()
import tkinter as tk
import tkinter.messagebox as tm # 这里单独导入
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('200x200') # 长和宽
def hit_me():
tm.showinfo(title='Hi', message='hahaha') # 弹出显示信息窗口
tm.showwarning(title='Hi', message='nonono') # 弹出警告窗口
tm.showerror(title='Hi', message='error!') # 弹出错误窗口
print(tm.askquestion(title='Hi', message='hahaha')) # 会弹出 是(Y)/否(N),这可以作为该函数的返回值进行打印(返回yes/no)
print(tm.askyesno(title='Hi', message='hahaha')) # 与上述一样, 返回True / False
tk.Button(window, text='hit me', command=hit_me).pack()
window.mainloop()
import tkinter as tk
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('200x200') # 长和宽
tk.Label(window, text=1).pack(side='top') # 放上面
tk.Label(window, text=2).pack(side='bottom') # 放下面
tk.Label(window, text=3).pack(side='left')
tk.Label(window, text=4).pack(side='right')
window.mainloop()
import tkinter as tk
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('200x200') # 长和宽
for i in range(4):
for j in range(3): # 设置放在什么位置
tk.Label(window, text=1).grid(row=i, column=j, padx=10, pady=10) # padx是外部的展开(单位变大) pady同理, 方向不同,在前加一个i,即ipadx,ipady即是内部的展开
window.mainloop()
import tkinter as tk
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('200x200') # 长和宽
for i in range(4):
for j in range(3): # anchor 表示以什么为参数,nw是north,west的简写
tk.Label(window, text=1).place(x=10, y=100, anchor='nw') # 单独指定放在某一个位置
window.mainloop()
import tkinter as tk
import time
window = tk.Tk() # 一个窗口
window.title('my window') # 标题
window.geometry('400x300') # 长和宽
user1 = 'dzc'
password1 = 'dzc'
user2 = "未知字符"
password2 = "未知字符"
def Catch(): # 这是登录按钮事件, 必须满足条件才能登录.
def Close():
window4.destroy()
if (var1.get() == user1) & (var2.get() == password1) or (var1.get() == user2) & (var2.get() == password2):
window1 = tk.Tk()
window1.title("你要干什么!")
window1.geometry('400x300')
else:
window4 = tk.Tk()
window4.title('my window') # 标题
window4.geometry('400x300') # 长和宽
l = tk.Label(window4, text='没有该账户,是否立即注册?') # 登录失败会提示是否注册用户
l.pack()
tk.Button(window4, text='不用', width=15, height=1, command=Close).place(x=60, y=240)
tk.Button(window4, text='注册', width=15, height=1, command=Set).place(x=220, y=240)
def Set(): # 注册用户窗口
window2 = tk.Tk()
window2.title("注册界面....")
window2.geometry("400x300")
tk.Label(window2, text='User name').place(x=50, y=150) # 构造与主窗口类似
tk.Label(window2, text='password').place(x=50, y=190)
var3 = tk.StringVar()
var4 = tk.StringVar()
tk1 = tk.Entry(window2, textvariable=var3)
tk1.place(x=200, y=150)
tk2 = tk.Entry(window2, textvariable=var4)
tk2.place(x=200, y=190)
def ZhuCe():
global user2 # 注册的赋值
global password2
user2 = tk1.get()
password2 = tk2.get()
window3 = tk.Tk()
l = tk.Label(window3, text='注册成功!')
l.pack()
window2.destroy()
tk.Button(window2, text='确认', width=15, height=1, command=ZhuCe).place(x=200, y=240)
tk.Label(window, text='User name').place(x=50, y=150) # 主窗口上的标签, 用于提示
tk.Label(window, text='password').place(x=50, y=190)
var1 = tk.StringVar()
var2 = tk.StringVar()
tk.Entry(window, textvariable=var1).place(x=200, y=150) # 主窗口上的输入框, 用于交互
tk.Entry(window, textvariable=var2, show='*').place(x=200, y=190)
tk.Button(window, text='登录', width=15, height=1, command=Catch).place(x=60, y=240) # 主窗口上的按钮, 用于交互
tk.Button(window, text='注册', width=15, height=1, command=Set).place(x=220, y=240)
window.mainloop()
完结!