python学习笔记(九)

python的GUI(续)

Menubar菜单

menubar俗称菜单栏,建立菜单栏的代码&注释&结果截图如下

import tkinter as tk

window=tk.Tk() #建立一个窗口object
window.title("my window")#命名
window.geometry('200x200')#大小

l=tk.Label(window,text='',bg='pink')
l.pack()
counter=0
def do_job():
    global counter
    l.config(text='do'+str(counter))
    counter+=1

menubar=tk.Menu(window)#建立menubar
filemenu=tk.Menu(menubar,tearoff=0)#为菜单栏增添选项,tearoff=0就是不能被分开
menubar.add_cascade(label='File',menu=filemenu)#将filemenu挂载到menubar上
filemenu.add_command(label='New',command=do_job)#为file栏增添新内容
filemenu.add_command(label='Open',command=do_job)#为file栏增添新内容
filemenu.add_command(label='Save',command=do_job)#为file栏增添新内容
filemenu.add_separator()#加一个分割线
filemenu.add_command(label='Exit',command=window.quit)#为file栏增添新内容,整个窗口退出

editmenu=tk.Menu(menubar,tearoff=0)
menubar.add_cascade(label='Edit',menu=editmenu)#将filemenu挂载到menubar上
editmenu.add_command(label='Cut',command=do_job)#为file栏增添新内容
editmenu.add_command(label='Copy',command=do_job)#为file栏增添新内容
editmenu.add_command(label='Paste',command=do_job)#为file栏增添新内容

submenu=tk.Menu(filemenu)#增加一个子菜单挂载在filemenu上
filemenu.add_cascade(label='Import',menu=submenu,underline=0)
submenu.add_command(label='submenu1',command=do_job)

window.config(menu=menubar)#将menubar绑定到window
window.mainloop()#一直刷新window

Frame框架

frame是容器组件,用于在复杂布局中将其他的组件分组。即可以收纳其它组件,也可以做其它组件的父组件的组件。窗口中的窗口
代码&注释&运行结果如下:(实现一个简易的frame)

import tkinter as tk

window=tk.Tk() #建立一个窗口object
window.title("my window")#命名
window.geometry('200x200')#大小

tk.Label(window, text='on the window').pack()#在window上定义一个标签

frm = tk.Frame(window)#创建一个frame
frm.pack()

frm_l = tk.Frame(frm)#在刚刚创建的frame上创建两个子frame
frm_r = tk.Frame(frm)

frm_l.pack(side='left')#side为left表示在左边,相对于父frame的位置
frm_r.pack(side='right')#side为right表示在右边

###这里的三个label就是在我们创建的frame上定义的label部件,还是以容器理解,就是容器上贴了标签,来指明这个是什么,解释这个容器。
tk.Label(frm_l, text='on the frm_l1').pack()#在两个区域上定义三个label
tk.Label(frm_l, text='on the frm_l2').pack()
tk.Label(frm_r, text='on the frm_r1').pack()

window.mainloop()#一直刷新window

messagebox弹窗

messagebox 消息对话框总体来说分为两种,一是消息框,二是对话框。
消息框,主要用来提示用户相应的信息,用户知道即可;对话框,告诉用户信息的同时,需要用户选择做出下一步行动,有一个交互的过程。

import tkinter as tk
from tkinter import messagebox#这句话要写,不然弹窗会报错

window=tk.Tk() #建立一个窗口object
window.title("my window")#命名
window.geometry('200x200')#大小
def hit_me():
    #tk.messagebox.showinfo(title='Hi',message='hahahahha')#蓝色提示
    #tk.messagebox.showwarning(title='Warning', message='nononono')#黄色警告
    #tk.messagebox.showerror(title='Error', message='Error') #红色错误
    #tk.messagebox.askquestion(title='hello', message='Are you happy?') #询问,返回值为yes或者no
    #tk.messagebox.askyesno(title='hello', message='Are you happy?') #询问,返回值为True或者False
    tk.messagebox.askretrycancel(title='hello', message='Are you happy?')  # 询问,返回值为True或者False
    tk.messagebox.askokcancel(title='hello', message='Are you happy?')  # 询问,返回值为True或者False
tk.Button(window,text='hit me',command=hit_me).pack()

window.mainloop()#一直刷新window



pack(),grid(),place()放置位置

pack()用法

import tkinter as tk
from tkinter import messagebox#这句话要写,不然弹窗会报错

window=tk.Tk() #建立一个窗口object
window.title("my window")#命名
window.geometry('200x200')#大小

tk.Label(window,text=1).pack(side='top')
tk.Label(window,text=1).pack(side='bottom')
tk.Label(window,text=1).pack(side='left')
tk.Label(window,text=1).pack(side='right')

window.mainloop()#一直刷新window

在这里插入图片描述

#grid()
for i in range(4):#四行三列
    for j in range(3):
        tk.Label(window,text=1).grid(row=i,column=j,padx=10,pady=10)#外部扩展

tk.Label(window,text=1).place(x=10,y=100,anchor='nw')

实例:用户登录系统

这里之前内容没囊括的地方就是在存储用户信息时用到了python的pickle模块,没有用到数据库
python的pickle模块实现了基本的数据序列化和反序列化。可以在磁盘上保存对象,并在需要的时候读取出来。任何对象都可以执行序列化操作。
但pickle只能在python中使用
pickle主要有两个函数:
1.dump()函数
作用:实现python对象的序列化,将obj保存到file中
具体语法:pickle.dump(obj, file[, protocol])
2.load()函数
作用:用于反序列化,将序列化的对象重新恢复成python对象
具体语法:pickle.load(file)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值