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实现查询IP地址所在地
Mar 29 Python
Django的信号机制详解
May 05 Python
Python分治法定义与应用实例详解
Jul 28 Python
pycharm安装和首次使用教程
Aug 27 Python
解决python线程卡死的问题
Feb 18 Python
Python数据库小程序源代码
Sep 15 Python
解决使用python print打印函数返回值多一个None的问题
Apr 09 Python
Python基于time模块表示时间常用方法
Jun 18 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 Python
python实现进度条的多种实现
Apr 29 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 Python
Python中super().__init__()测试以及理解
Dec 06 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
MySQL授权问题总结
2007/05/06 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
简单的jQuery入门指引
2015/07/28 Javascript
动态加载js、css的实例代码
2016/05/26 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
Vue 动态添加路由及生成菜单的方法示例
2019/06/20 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
美国滑板店:Tactics
2020/11/08 全球购物
暑假实习求职信范文
2013/09/22 职场文书
企业管理专业个人求职信范文
2013/09/24 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
父母对孩子说的话
2014/04/12 职场文书
表彰大会新闻稿
2015/07/17 职场文书
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js