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__
Mar 12 Python
python中的编码知识整理汇总
Jan 26 Python
Python中的日期时间处理详解
Nov 17 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
替换python字典中的key值方法
Jul 06 Python
浅谈Python基础—判断和循环
Mar 22 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
Python基于内置库pytesseract实现图片验证码识别功能
Feb 24 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
Keras load_model 导入错误的解决方式
Jun 09 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
Jul 14 Python
Python字典取键、值对的方法步骤
Sep 30 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
javascript学习网址备忘
2007/05/29 Javascript
学习ExtJS table布局
2009/10/08 Javascript
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
JS+CSS实现简单滑动门(滑动菜单)效果
2015/09/19 Javascript
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
python client使用http post 到server端的代码
2013/02/10 Python
深入讲解Python编程中的字符串
2015/10/14 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
机械专业应届生求职信
2013/09/21 职场文书
初三开学计划书
2014/04/27 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
网吧温馨提示
2015/07/17 职场文书
女儿满月酒致辞
2015/07/29 职场文书
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python