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实现web端用户登录和注册功能的教程
Apr 30 Python
Python中使用Queue和Condition进行线程同步的方法
Jan 19 Python
详解Python3操作Mongodb简明易懂教程
May 25 Python
python绘制多个曲线的折线图
Mar 23 Python
python生成lmdb格式的文件实例
Nov 08 Python
python 杀死自身进程的实现方法
Jul 01 Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 Python
大数据分析用java还是Python
Jul 06 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 Python
python分布式爬虫中消息队列知识点详解
Nov 26 Python
pycharm 的Structure界面设置操作
Feb 05 Python
python 如何读、写、解析CSV文件
Mar 03 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
PHP URL路由类实例
2013/11/12 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
Node调用Java的示例代码
2017/09/20 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
React学习之JSX与react事件实例分析
2020/01/06 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
python图像常规操作
2017/11/11 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
python快排算法详解
2019/03/04 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
南京某公司笔试题
2013/01/27 面试题
电子邮箱格式怎么写
2014/01/12 职场文书
优秀教师获奖感言
2014/01/31 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书