tkinter学习

系列文章目录

第一章 tkinter 窗体学习


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、root是什么?

        tkinter创建程序,root=Tk()可以理解为一本书,我们程序的界面可以理解为书里的每页纸。

我们点击操作就相当于翻页,为了便于操作,给每页绑定个Frame,这样就可以轻松的删除该页或显示该页了。这样root=Tk()放在外面,不要直接放在类里,因为其他的页面都要用它。一般格式为:

if __name__=='__main__':
  root=tk.Tk()
  login=LoginPage(root)#登陆界面
  
  mainpage=MainPage(root)#主界面
  root.mainloop()

二、界面

from tkinter import *

root=Tk()

root.title("this is title")
root.iconbitmap('xxx.ico') #设置图标
root.resizable(True,False) #设置宽可以调,高不可调

#root.minsize()
#root.maxsize()

#root.state('zoomed')

root.config(bg='blue')
print(root.keys())  #属性列表

root.mainloop()
三,pack布局
from tkinter import *

root=Tk()
root.geometry('400x300')

#side padx pady ipadx ipady anchor fill expand
#side: TOP BOTTOM RIGHT LEFT
#anchor N S W E NW放在控件里,显示文字位置
#ipady ipadx填充控件内部区域
#fill :X Y pack布局里面
#expand pack布局里,扩充

label=Label(root,text='hello')
label.pack()  #默认side=TOP

label2=Label(root,text='label2',bg='yellow')
label2.pack(side=BOTTOM)
label3=Label(root,text='label2',bg='green',anchor=N)
label3.pack(side=BOTTOM,pady=0,ipady=40)





root.mainloop()

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.变量类别和追踪

from tkinter import *

root=Tk()
root.geometry('400x300')

def func2(*args):
    print(x.get())


def func(*args):
    print("我被读取了")


x=DoubleVar()
x.trace('r',func)#追踪

entry=Entry(root,width=10,textvariable=x).pack()
btn=Button(root,text='click',command=func2).pack()



root.mainloop()

Radiobutton

from tkinter import *

root=Tk()
root.geometry('400x300')

v=IntVar()
rad=Radiobutton(root,text='01',value=1,variable=v)
rad.pack()

rad2=Radiobutton(root,text='02',value=2,variable=v)
rad2.pack()
rad2.select()#默认选中


rad3=Radiobutton(root,text='03',value=3,variable=v).pack()

v2=IntVar()
v2.set(5)
def fun():
    print(v2.get())
rad4=Radiobutton(root,text='男',value=4,variable=v2,command=lambda :fun())
rad4.pack()
rad5=Radiobutton(root,text='女',value=5,variable=v2,command=lambda :fun(),indicatoron=0)#indicatioron=0 表示方块
rad5.pack()




root.mainloop()

#例子
import tkinter as tk

root=tk.Tk()
root.geometry("500x500")

def func():
    print(var.get())


#创建一个可变变量,收集选择的结果
var=tk.IntVar()

#单选按钮通过一个variable属性,设置为一组。variable通常用选择类组件,可以双向绑定
#选择的结果是通过value 会被赋值给variable 绑定属性
tk.Radiobutton(root,text='c#    ',variable=var,value=1).pack(pady=10)
tk.Radiobutton(root,text='c++  ',variable=var,value=2).pack(pady=10)
tk.Radiobutton(root,text='python',variable=var,value=3).pack(pady=10)

tk.Button(root,text='click',command=func).pack()



root.mainloop()


#例子2
import tkinter as tk

# variable用于绑定选择类组件的变量
# textvariable用于绑定文本类组件的变量 如label Entry

root=tk.Tk()
root.geometry("500x400")

langes=[("python",1),('c++',2),('java',3)]

var_rad=tk.IntVar()

def fun():
    print(var_rad.get())

def fun2(event):
    a=event.widget #获取该控件
    print(a['text'],a['value'])


for m,index in langes:
    r=tk.Radiobutton(root,variable=var_rad,value=index,text=m,command=fun)
    r.pack(pady=10)
    r.bind('<Button-1>',fun2)

    print(m,index)

root.mainloop()
ChecKbox
from tkinter import *

root=Tk()
root.geometry('400x300')

dic={0:'足球',
     1:'排球',
     2:'乒乓球',
     3:'篮球',
      }


check_flag={}
for i in range(len(dic)):
    check_flag[i]=BooleanVar()
    check_btn=Checkbutton(root,text=dic[i],variable=check_flag[i])
    check_btn.pack()


def test():
    chose=[]
    for i in check_flag:
        if check_flag[i].get()==True:
            chose.append(dic[i])
    print(chose)


button=Button(root,text='click',command=test).pack()



root.mainloop()

Frame

from tkinter import *

root=Tk()
root.geometry('400x300')


frame=Frame(root,relief=GROOVE,width=130,height=100,borderwidth=1,bg='cyan')
frame.pack(padx=10)

label_frame=LabelFrame(root,relief=GROOVE,width=130,height=100,borderwidth=1,text='labelframe')
label_frame.pack(pady=10)

label=Label(frame,text='hello',bg='yellow')
label.pack()

label2=Label(label_frame,text='hello world')
label2.pack()





root.mainloop()

Toplevel

from tkinter import *

root=Tk()
root.geometry('400x300+700+200')

top=Toplevel()
top.title('new window')
top.geometry('400x200')
top.config(bg='green')

def creat():
    Label(root,text='creat_label').pack()
    print(entry.get())
    top.destroy()

button=Button(top,text='click',command=creat).pack()

entry=Entry(root,width=50)
entry.pack()







root.mainloop()

滑块Scale

from tkinter import *

root=Tk()
root.geometry('400x300+700+200')

x=DoubleVar()

scla=Scale(root,variable=x,orient=HORIZONTAL,resolution=10,from_=50,to=190,fg='green',troughcolor='red',length=200)
scla.pack()
scla.set(90)

print(scla.get())

label=Label(root,textvariable=x)
label.pack(pady=10)





调色板

from tkinter import *
from tkinter.colorchooser import *


root=Tk()
root.geometry('400x300+700+200')

def change_color():
    my_color=askcolor()
    print(my_color)
    root.config(bg=my_color[1])

btn=Button(root,text='调色板',command=change_color)
btn.pack()



root.mainloop()

Spinbox

from tkinter import *
from tkinter.colorchooser import *


root=Tk()
root.geometry('400x300+700+200')



spinbox=Spinbox(root,from_=10,to=90,increment=10)
spinbox.pack()

print(spinbox.get())

l=["北京",'上海']
spinbox2=Spinbox(root,values=l)
spinbox2.pack()
spinbox2.delete(0,END)#清除数据
spinbox2.insert(0,'成都')#spinbox没有set方法
print(spinbox2.get())





root.mainloop()

事件绑定

import tkinter
from tkinter import *
from tkinter.colorchooser import *
from tkinter import messagebox


root=Tk()
root.geometry('400x300+700+200')

def test(event):
    # result=messagebox.showinfo('title','message')
    result=messagebox.askyesno('hel','你选中')
    if result:
        print('ok')
    else:
        print('no')

def fun1():
    print('fun1')

def fun(event:tkinter.Event):#绑定键盘事件
    btn.unbind('<Button-3>') #解除绑定鼠标右键
    print(event.keysym)
    print()






btn=Button(root,text='click',command=fun1)
btn.pack()
btn.bind('<Button-3>',test,add='+')


root.bind('<s>',fun)#窗体绑定到键盘事件上

def close():
    msg=messagebox.showinfo('确定退出吗?','退出')

    root.quit()


root.protocol("WM_DELETE_WINDOW",close)



root.mainloop()

菜单创建

import tkinter as tk



root=tk.Tk()
root.geometry("500x400")

#创建一级菜单栏
menu=tk.Menu(root)

#给菜单栏添加一级选项
menu.add_command(label='新建',command=lambda :print('new_file'))
menu.add_command(label='关于',command=lambda :print('about'))
menu.add_command(label='退出',command=lambda :print('exit'))


#配置菜单栏
root.config(menu=menu)


root.mainloop()


#创建二级菜单栏
import tkinter as tk



root=tk.Tk()
root.geometry("500x400")

#1.0创建一级菜单栏
menu=tk.Menu(root)

#1.1 使用一级菜单栏创建二级菜单栏
file_menu=tk.Menu(menu)

#1.3给二级菜单栏添加选项
file_menu.add_command(label='新建',command=lambda :print('new_file'))
file_menu.add_command(label='关于',command=lambda :print('about'))
file_menu.add_command(label='退出',command=lambda :print('exit'))

#1.4将二级菜单栏绑定到一级菜单栏
menu.add_cascade(label='文件',menu=file_menu)


#配置菜单栏
root.config(menu=menu)


root.mainloop()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值