做任务领黄钻的网站,找个为公司做网站的,有经验的南昌网站设计,英文网站注册文章目录 四大按钮Button连击MenubuttonCheckbuttonRadiobutton tkinter系列#xff1a;
GUI初步#x1f48e;布局#x1f48e;绑定变量#x1f48e;绑定事件#x1f48e;消息框#x1f48e;文件对话框控件样式扫雷小游戏#x1f48e;强行表白神器
四大按钮
tkinter中… 文章目录 四大按钮Button连击MenubuttonCheckbuttonRadiobutton tkinter系列
GUI初步布局绑定变量绑定事件消息框文件对话框控件样式扫雷小游戏强行表白神器
四大按钮
tkinter中有四个控件被冠以Button之名分别是Button, Checkbutton, Radiobutton, Menubutton但后三种其实说不上是按钮Checkbutton是单选框Radiobutton其实更类似于ComboboxMenubutton则是菜单。
这几种按钮虽然功能各异但都具有下面这些属性这些属性属于非常通用的属性并且在控件样式中也以Button为例展示过了本文就不再赘述。既然以四大按钮为题那么就要稍微有点深度展示一些此前不曾展示过的高级功能。
属性说明background/bg背景色borderwidth/bd边框宽度foreground/fg前景色state状态font字体width, height宽度高度padx,pady水平外间距垂直外间距text显示文本justify多行文本对齐方式relief边框样式underline下划线wraplength换行宽度
Button连击
Button可通过repeatdelay和repeatinterval来控制连击操作。
正常情况下只有按下鼠标然后再抬起才算是一次点击事件。而tkinter中点击的逻辑则是如果按下按钮不松手那么等待repeatdelay时间后每隔repeatinterval就算是一次点击。
下面写代码测试一下
import tkinter as tkroot tk.Tk()v tk.StringVar()
iClick 0
v.set(f点击{iClick}次)def click():global iClickiClick 1v.set(f点击{iClick}次)tk.Button(root, height3, width15,font (黑体, 60, bold), commandclick, repeatdelay1000, repeatinterval300,textvariablev).pack(sidetk.TOP, filltk.BOTH)root.mainloop()其含义是每点击一次iClick就加一而按钮自身的设置是如果按下按钮1000毫秒不松手那么接下来每隔300毫秒就算一次点击。效果如下 Menubutton
Menubutton的特色当然是设置菜单所以想用Menubutton前提是有一个菜单。而在设置菜单过程中可通过direction属性来设置菜单位置。如果不设置direction菜单会出现在按钮的下方下面将direction设置为另外三个方向
import tkinter as tkroot tk.Tk()
root.geometry(400x200)def setMenu(root, mb, text):m tk.Menu(mb)for i in range(3):m.add_command(labelf{text}{i})m.add_separator()m.add_command(label退出, commandroot.quit)return mfrm tk.Frame(root)
frm.place(relx0.5, rely0.5, anchortk.CENTER)for d in [above, left, right]:mb tk.Menubutton(frm, textd, directiond)mb.pack(sidetk.LEFT)m setMenu(root, mb, d)mb.config(menum)root.mainloop()效果如下 Checkbutton
Checkbutton和不同Button相比是多了一个可供勾选的功能与此同时也就具备了选中和未选中两种状态。这两种状态默认是1和0但在Checkbutton中可通过offvalue和onvalue来设置未选中和已经选中的值。
而绑定Checkbutton的选中状态的参数是variable。
root tk.Tk()
root.geometry(400x200)frm tk.Frame(root)
frm.place(relx0.5, rely0.5, anchortk.CENTER)v tk.StringVar()font (黑体, 20, bold)
Checkbutton(frm, text单选框, fontfont, variablev, offvalue未选中, onvalue选中了).pack(sidetk.LEFT)
tk.Label(frm, fontfont, textvariablev).pack(sidetk.LEFT)root.mainloop()效果如下 Radiobutton
Radiobutton可以看成是无法同时选中的多个Checkbutton所以也通过variable来作为关联变量作为当前被选中的值。但由于有多个值所以也就没有类似offvalue和onvalue这样的参数了。
root tk.Tk()v StringVar(1)frm tk.Frame(root)
frm.place(relx0.5, rely0.3, anchortk.CENTER)font (黑体, 20, bold)
for i in range(4):Radiobutton(root, textfRadio{i}, fontfont,variablev, valuei).pack(sidetk.LEFT)frm tk.Frame(root)
frm.place(relx0.5, rely0.7, anchortk.CENTER)
tk.Label(frm, fontfont, textvariablev).pack(sidetk.TOP)root.mainloop()结果如下