Python基础之tkinter图形化界面学习


Posted in Python onApril 29, 2021

一、基础内容

import tkinter as tk
from PIL import Image,ImageTk

def my():
        pwin.destroy()
        win.deiconify()


win = tk.Tk()
#win.geometry('320x240+100+50') #长320宽240 右100,下50
win['width']=320   #可以用win.keys()查看哪些可以这样写
win['height']=240 
win.title('tkinter图形化专题学习')

#win.iconbitmap('my.ico')
img=ImageTk.PhotoImage(image=Image.open('1.gif','r'))
win.iconphoto(False,img)
#win.withdraw()#临时退出
#win.deiconify()#恢复
#win.iconify()#最小化
#win.destroy()#关掉
#help(win.state)
"""
win.state('iconic')
win.state('normal')
win.state('zommed')
win.state('zoomed')
win.state('withdraw')
"""
#win.attributes('-alpha',0.5) #设置透明度
#win.attributes('-toolwindow',1)#没有最大化最小化按钮
#win.attributes('-toolwindow',0)#常规窗口
#win.attributes('-topmost',1) #置顶

win.withdraw()  #隐藏原窗口
pwin=tk.Toplevel(win)  #新建弹窗
pwin.title('弹窗')
pwin.protocol('WM_DELETE_WINDOW',my)


win.mainloop()

二、渐变窗口与计时器

#计时器
import tkinter as tk
import time

def my():
    global x
    if x >1:
        return
    win.title('计时器:{:.2f}'.format(x))
    win.attributes('-alpha', x)
    x += 0.01
    
    win.after(200,my) #100ms
    
win = tk.Tk()
win.title("计时器")
win['bg']= 'lightblue'  #用win.keys()查看
win.geometry('300x300')
win.resizable(0,0) #不可变窗口大小

x = 0.01
win.attributes('-alpha', x)
win.after(200,my)

win.mainloop()

三、简单的布局标签文本框按钮

3.1 布局

import tkinter as tk
win=tk.Tk()
win.title("布局")
win.geometry('320x240')
#win.resizable(0,0)
#定义
lbl=tk.Label(win,text="请输入")
txt=tk.Entry(win)
btn=tk.Button(win,text="确定")
#布局 方法一pack打包式放置 方法二grid表格式放置 方法三place任意放置
"""
lbl.pack(side='left' ,padx=(10,0))
txt.pack(side='left')   #txt.pack_info()查看pack的参数
btn.pack(side='left', padx='10')
"""
"""
lbl.grid(row=0,column=0,padx=(50,10),pady=10) #lbl.grid_info()查看grid的参数
txt.grid(row=0,column=1)
btn.grid(row=1,column=0,columnspan=2,padx=(50,0),pady=10, sticky='we')
"""
lbl.place(relx=0.1,rely=0.2)
txt.place(relx=0.3,rely=0.15)
btn.place(relx=0.5,rely=0.25)
#win.mainloop()

3.2 布局

import tkinter as tk
#建窗口
win=tk.Tk()
win.title('布局')
#建组件
frm=tk.Frame(win) #框架
#定义
lbl=tk.Label(frm,text='请输入')
txt=tk.Entry(frm)
btn=tk.Button(win,text='确定')

#布局
lbl.pack(side='left', padx=10, pady=10)
txt.pack(side='left', padx=10, pady=10)
frm.pack()
btn.pack(fill='x')


win.mainloop()

四、摄氏度华氏度

import tkinter as tk
def myfun(e):
#def myfun():
    try:
        a=int(entry1.get())
        b=int(entry2.get())
        lbx.delete(0,'end')
        for i in range(a,b+1):
            f=i*9/5+32
            lbx.insert('end','    {}           {}'.format(i,f))
    except:
        pass


win=tk.Tk()
win.title('温度转换')
win.resizable(0,0) #大小不可更改
label1 = tk.Label(win, text='请输入第1个整数')
label2 = tk.Label(win, text='请输入第2个整数')
label3 = tk.Label(win, text='摄氏温度   华氏温度')
entry1 = tk.Entry(win)
entry2 = tk.Entry(win)
entry1.insert(0, '10')
entry2.insert(0, '15')
#btn=tk.Button(win, text='确定',command=myfun)
btn=tk.Label(win, text='确定',#把label变成按钮
             relief='groove')  #浮雕
btn.bind('<Button-1>', myfun) #用bing绑定 必须给函数参数 
lbx=tk.Listbox(win)

#滚动条
scr=tk.Scrollbar(win)
scr['command']=lbx.yview
lbx['yscrollcommand']=scr.set

label1.grid(row=1, column=0)
label2.grid(row=2, column=0)
label3.grid(row=0, column=2)

entry1.grid(row=1, column=1)
entry2.grid(row=2, column=1)
btn.grid(row=3, column=1, sticky="ew")
lbx.grid(row=1, column=2, rowspan=3, padx=10, pady=10)
scr.grid(row=1, column=3, rowspan=3, sticky='ns')
#btn.key()找到可以设置的参数 或者btn.config()

win.mainloop()

五、随机弹出数字(随机点名、抽奖)

import tkinter as tk
import random
def myfun():
    lst=list(range(100))
    name=random.choice(lst)
    lbl['text']=name
    win.after(500,myfun)

win=tk.Tk()
win.title('抽奖程序')

lbl=tk.Label(win,text='***', width=6,font='-size 48')
btn=tk.Button(win,text='开始', font='-size 36', command=myfun)

lbl.grid(row=0,column=0,padx=10,pady=10)
btn.grid(row=0,column=1,padx=10,pady=10)


#win.mainloop()

六、几行几列五子棋画布

import tkinter as tk

win=tk.Tk()
win.title('五子棋')
win.geometry('800x600+64+32')
win.resizable(0,0)

#建画布
cav=tk.Canvas(win, width=600,height=600, bg='yellow')
rfm=tk.Frame(win,width=200,height=600, bg='lightyellow')
cav.pack(side='left')
rfm.pack(side='right')

#画线
for i in range(1,20):
    x1, y1, x2, y2=30, i*30,19*30,i*30
    cav.create_line(x1,y1,x2,y2)
    cav.create_line(y1,x1,y2,x2)

到此这篇关于Python基础之tkinter图形化界面学习的文章就介绍到这了,更多相关Python tkinter图形化界面学习内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python新手在作用域方面经常容易碰到的问题
Apr 03 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
Django中的cookie和session
Aug 27 Python
关于tf.reverse_sequence()简述
Jan 20 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 Python
python默认参数调用方法解析
Feb 09 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
May 25 Python
python读取图像矩阵文件并转换为向量实例
Jun 18 Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 Python
如何使用Python对NetCDF数据做空间相关分析
Apr 21 Python
Django cookie和session的应用场景及如何使用
Apr 29 #Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 #Python
python中requests库+xpath+lxml简单使用
python实现进度条的多种实现
教你如何使用Python下载B站视频的详细教程
Python+uiautomator2实现自动刷抖音视频功能
Django项目如何正确配置日志(logging)
Apr 29 #Python
You might like
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
PHP防注入安全代码
2008/04/09 PHP
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP笔记之:日期函数的使用介绍
2013/04/24 PHP
php实现图片上传时添加文字和图片水印技巧
2020/04/18 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
jquery 使用点滴函数代码
2011/05/20 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
2011/12/12 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
Python操作CouchDB数据库简单示例
2015/03/10 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
python实现简单文件读写函数
2021/02/25 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
学生自我鉴定
2013/12/18 职场文书
幼儿园亲子活动总结
2014/04/26 职场文书