Python基础之tkinter图形化界面学习
作者:anITfish 发布时间:2023-09-03 00:47:06
标签:Python,tkinter,图形化界面
一、基础内容
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)
来源:https://blog.csdn.net/qq_31949641/article/details/116229818


猜你喜欢
- 环境:前端 vue ip地址:192.168.1.205后端 springboot2.0 ip地址:192.168.1.217主要开发后端。
- 【尊重原创,转载请注明出处】https://blog.csdn.net/guyuealian/article/details/7967225
- 我就废话不多说了,直接上代码吧!import torchimport timex = torch.Tensor([[1, 2, 3], [5
- 以前我一直用os.system()处理一些系统管理任务,因为我认为那是运行linux命令最简单的方式.我们能从Python官方文档里读到应该
- Numpy提供了几种数据保存的方法。以3*4数组a为例:1. a.tofile("filename.bin")这种方法只
- LRULRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访
- 功能super功能:super函数是子类用于调用父类(超类)的一个方法。用法1.在子类 __init__() 方法中正确的初始化父类,保证相
- Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使
- 一、代码注释介绍注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释是编写程序时,写程序的人给一个语句、程序段、函数等的解
- 本文主要介绍了pytorch cnn 识别手写的字实现自建图片数据,分享给大家,具体如下:# library# standard libra
- 引言python编程时,一部分人习惯将实现同一个功能的代码放在同一个文件;使用这些代码只需要import就可以了;下面看一个例子。testM
- pandas有groupby分组函数和sort_values排序函数,但是如何对dataframe分组之后排序呢?In [70]: df =
- Python 定义了全局变量的特性,使用global 关键字修饰global key_word但是他的一大缺陷就是只能本module 中也就
- mysql最常用的索引结构是btree(O(log(n))),但是总有一些情况下我们为了更好的性能希望能使用别的类型的索引。hash就是其中
- 我在使用python读取几十万行的文件中的数据,并构造字典,列表等数据结构时,再访问字典,列表时,一般都会出现内存不够的问题,然后只能循环读
- 今天要给大家分享的是一款自己写的屏保程序,大学大家最头疼的就是四六级的考试了,上次考试做阅读的时候,情不自禁的发呆,想着如果我能在电脑上写一
- 最近在研究Hacker News API时遇到一个HTTPS问题。因为所有的Hacker News API都是通过加密的HTTPS协议访问的
- UI自动化测试过程中,可能会出现因测试环境不稳定、网络慢等情况,如果不做任何处理的话,会出现无法定位到特定元素而报错,导致自动化测试无法顺利
- yolov5的head修改为decouple headyolox的decoupled head结构本来想将yolov5的head修改为dec
- Javascript中标签(label)是一个标识符。标签可以与变量重名,它是一个独立的语法元素(既不是变量,也不是类型),其作用是标识”标