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中__init__和__new__的区别详解
Jul 09 Python
github配置使用指南
Nov 18 Python
python模块之sys模块和序列化模块(实例讲解)
Sep 13 Python
python实现k-means聚类算法
Feb 23 Python
浅谈python日志的配置文件路径问题
Apr 28 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
Jan 08 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
部署Django到阿里云服务器教程示例
Jun 03 Python
python实现黄金分割法的示例代码
Apr 28 Python
超级详细实用的pycharm常用快捷键
May 12 Python
Python matplotlib可视化之绘制韦恩图
Feb 24 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
php tp验证表单与自动填充函数代码
2012/02/22 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
php微信开发自定义菜单
2016/08/27 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
2020/03/18 PHP
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
Python urlopen()函数 示例分享
2014/06/12 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
使用python模拟高斯分布例子
2019/12/09 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
客服实习的个人自我鉴定
2013/10/20 职场文书
装饰活动策划方案
2014/02/11 职场文书
房屋买卖协议书范本
2014/04/10 职场文书
小学庆六一活动总结
2014/08/28 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
员工试用期自我评价
2014/09/18 职场文书
教师个人考察材料
2014/12/16 职场文书