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 23 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 Python
Python的SimpleHTTPServer模块用处及使用方法简介
Jan 22 Python
Python闭包之返回函数的函数用法示例
Jan 27 Python
Python实现按照指定要求逆序输出一个数字的方法
Apr 19 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
使用Python生成200个激活码的实现方法
Nov 22 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
Dec 13 Python
Python pandas库中的isnull()详解
Dec 26 Python
Python实现灰色关联分析与结果可视化的详细代码
Mar 25 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
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
使用Yii2实现主从数据库设置
2016/11/20 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
js 目录列举函数
2008/11/06 Javascript
JavaScript 学习点滴记录
2009/04/24 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
浅谈JavaScript中的String对象常用方法
2015/02/25 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
仅利用30行Python代码来展示X算法
2015/04/01 Python
Python线性方程组求解运算示例
2018/01/17 Python
Python中的TCP socket写法示例
2018/05/11 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
J2EE模式面试题
2016/10/11 面试题
专业毕业生个性的自我评价
2013/10/03 职场文书
档案保密承诺书
2014/06/03 职场文书
2014年终个人工作总结
2014/11/07 职场文书
感谢信范文大全
2015/01/23 职场文书
幽灵公主观后感
2015/06/09 职场文书
三下乡活动心得体会
2016/01/23 职场文书
SQL注入详解及防范方法
2021/12/06 MySQL
进行数据处理的6个 Python 代码块分享
2022/04/06 Python