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调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
python学习入门细节知识点
Mar 29 Python
python 编写简单网页服务器的实例
Jun 01 Python
Python中如何导入类示例详解
Apr 17 Python
基于Python中的yield表达式介绍
Nov 19 Python
python scrapy重复执行实现代码详解
Dec 28 Python
Jupyter notebook 启动闪退问题的解决
Apr 13 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
python爬取天气数据的实例详解
Nov 20 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 Python
python 遍历磁盘目录的三种方法
Apr 02 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下的浮点运算不准的解决方法
2016/10/27 PHP
PHP进程通信基础之信号
2017/02/19 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
react路由配置方式详解
2017/08/07 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
35个Python编程小技巧
2014/04/01 Python
Python常用随机数与随机字符串方法实例
2015/04/09 Python
python实现按行切分文本文件的方法
2016/04/18 Python
Python 字典与字符串的互转实例
2017/01/13 Python
python实现二叉树的遍历
2017/12/11 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
初学者学习Python好还是Java好
2020/05/26 Python
Python实现一个论文下载器的过程
2021/01/18 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
html5利用canvas绘画二级树形结构图的示例
2017/09/27 HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
学校搬迁方案
2014/06/15 职场文书
悬空寺导游词
2015/02/05 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers