在本文中,我们将详细介绍Python-关于Tkinter中的绑定标签的基本查询的各个方面,并为您提供关于pythontkinter标签的相关解答,同时,我们也将为您带来关于pythonguitkint
在本文中,我们将详细介绍Python-关于Tkinter中的绑定标签的基本查询的各个方面,并为您提供关于python tkinter标签的相关解答,同时,我们也将为您带来关于python gui tkinter快速入门教程 | python tkinter tutorial、python gui编程(tkinter)是什么?实例展示Python tkinter教程、Python tkinter 包含的插件类型 & tkinter中可变的变量、python tkinter 绑定回车键的有用知识。
本文目录一览:- Python-关于Tkinter中的绑定标签的基本查询(python tkinter标签)
- python gui tkinter快速入门教程 | python tkinter tutorial
- python gui编程(tkinter)是什么?实例展示Python tkinter教程
- Python tkinter 包含的插件类型 & tkinter中可变的变量
- python tkinter 绑定回车键
Python-关于Tkinter中的绑定标签的基本查询(python tkinter标签)
在这篇文章的给定示例中,提到如果使用默认绑定标记,则事件值在定义内部将不可见(将滞后一个)。
关于类绑定有一些解释。
我是一个初学者,所以想了解详细的原因。
能否请你解释一下为什么它在第一种情况下不起作用而在第二种情况下(修改绑定标签的顺序时)为何起作用。
import Tkinterdef OnKeyPress(event): value = event.widget.get() string="value of %s is ''%s''" % (event.widget._name, value) status.configure(text=string)root = Tkinter.Tk()entry1 = Tkinter.Entry(root, name="entry1")entry2 = Tkinter.Entry(root, name="entry2")entry3 = Tkinter.Entry(root, name="entry3")entry1.bindtags((''.entry1'', ''Entry'', ''.'', ''all''))entry2.bindtags((''Entry'', ''.entry1'', ''.'', ''all''))entry3.bindtags((''.entry1'',''Entry'',''post-class-bindings'', ''.'', ''all''))btlabel1 = Tkinter.Label(text="bindtags: %s" % " ".join(entry1.bindtags()))btlabel2 = Tkinter.Label(text="bindtags: %s" % " ".join(entry2.bindtags()))btlabel3 = Tkinter.Label(text="bindtags: %s" % " ".join(entry3.bindtags()))status = Tkinter.Label(anchor="w")entry1.grid(row=0,column=0)btlabel1.grid(row=0,column=1, padx=10, sticky="w")entry2.grid(row=1,column=0)btlabel2.grid(row=1,column=1, padx=10, sticky="w")entry3.grid(row=2,column=0)btlabel3.grid(row=2,column=1, padx=10)status.grid(row=3, columnspan=2, sticky="w")entry1.bind("<KeyPress>", OnKeyPress)entry2.bind("<KeyPress>", OnKeyPress)entry3.bind_class("post-class-bindings", "<KeyPress>", OnKeyPress)root.mainloop()
答案1
小编典典当你对窗口小部件进行绑定时,实际上并没有绑定到窗口小部件本身。当你这样做时mywidget.bind(...)
,实际发生的是绑定与具有与小部件相同名称的绑定标签相关联。
当检测到事件时,Tkinter首先确定哪个窗口小部件拦截了该事件。该窗口小部件将具有与之关联的零个或多个(默认值:四个)绑定标签的列表。Tkinter将检查每个标签,以查看是否存在与事件匹配的绑定。如果找到一个,它将执行绑定,然后继续执行下一个标记,直到用完标记或绑定的函数之一返回string
为止"break"
。
该序列如下所示:
- 你按“ x”键。此时,“ x”尚未插入任何位置
- Tkinter获取具有键盘焦点的小部件的绑定标签。
- 默认情况下,第一个绑定标签是小部件本身。该标签上有绑定吗?如果是这样,请执行它。例如,你可以打印窗口小部件的内容。因为尚未触发其他绑定,所以“ x”将不属于内容。
- 如果绑定的函数返回,”break”则不再进行事件处理。“ x”将不会插入到小部件中。
- 如果窗口小部件未返回”break”,则tkinter进入下一个绑定标记。
- 默认情况下,下一个绑定标签是小部件类。在与该事件匹配的类上是否存在绑定(按字母“ x”的键)?
- 在这种情况下,该类确实具有此事件的绑定,该绑定实际上是将“ x”插入到小部件中。到目前为止,“ x”仍未插入小部件中。但是,在此绑定之后,如果你打印了内容,则会看到“ x”
- 以这种方式继续处理,直到所有绑定标签都已处理完毕。
根据评论部分中正在进行的讨论,似乎还不清楚。我将尝试使其尽可能简单:
是类绑定,它将一个字符从内存中的事件对象复制到窗口小部件,从而使它出现在屏幕上。在类绑定触发之前,角色将不会出现在小部件中。类绑定之后,它将在小部件中。
python gui tkinter快速入门教程 | python tkinter tutorial
本文首发于个人博客https://kezunlin.me/post/d5c57f56/,欢迎阅读最新内容!
python tkinter tutorial
<!--more-->
Guide
main ui
messagebox
- showinfo()
- showwarning()
- showerror()
- askquestion()
- askokcancel()
- askyesno()
- askretrycancel()
- askyesnocancel()
filedialog
- asksaveasfilename()
- asksaveasfile()
- askopenfilename()
- askopenfile()
- askdirectory()
- askopenfilenames()
- askopenfiles()
demo
from numpy.random import seed, uniform
from numpy import uint8, uint16, load, save
from cv2 import imread, imwrite
from os import listdir, makedirs
from os.path import exists, basename
# for python 3
from tkinter import Tk, Frame, messagebox, filedialog, Button, Label, StringVar
class MyGUI():
def __init__(self):
self.root = Tk()
sw = self.root.winfo_screenwidth()
sh = self.root.winfo_screenheight()
ww = 700
wh = 200
x = (sw-ww) / 2
y = (sh-wh) / 2
self.root.title(''Image Compress Tool'')
# center
self.root.geometry("%dx%d+%d+%d" % (ww, wh, x, y))
# frame1
frame1 = Frame(self.root)
frame1.grid(row=0, column=0, sticky=''w'')
self.input_btn = Button(frame1, text="Input Folder", width=10, height=3, command=self.set_input_folder)
self.input_btn.pack(side=''left'')
self.input_label_text = StringVar()
self.input_label_text.set("Input Folder")
self.input_label = Label(frame1, textvariable=self.input_label_text, width=70, height=3)
self.input_label.pack(side=''left'')
# frame2
frame2 = Frame(self.root)
frame2.grid(row=1, column=0, sticky=''w'')
self.output_btn = Button(frame2, text="Output Folder", width=10, height=3, command=self.set_output_folder)
self.output_btn.pack(side=''left'')
self.output_label_text = StringVar()
self.output_label_text.set("Output Folder")
self.output_label = Label(frame2, textvariable = self.output_label_text, width=70, height=3)
self.output_label.pack(side=''left'')
# frame3
frame3 = Frame(self.root)
frame3.grid(row=2, column=0, sticky=''nw'')
self.run_btn = Button(frame3, text="执行加密", width=10, height=3, command=self.run_task)
self.run_btn.pack(side=''left'')
self.run_label_text = StringVar()
self.run_label_text.set("Ready")
self.run_label = Label(frame3, textvariable = self.run_label_text, width=70, height=3)
self.run_label.pack(side=''left'')
def mainloop(self):
self.root.mainloop()
def set_input_folder(self):
result = filedialog.askdirectory()
self.input_label_text.set(result)
def set_output_folder(self):
result = filedialog.askdirectory()
self.output_label_text.set(result)
def run_task(self):
input_folder = self.input_label_text.get()
output_folder = self.output_label_text.get()
#print("input_folder: "+input_folder)
#print("output_folder: "+output_folder)
if exists(input_folder):
#batch_compress(input_folder, output_folder)
self.run_label_text.set("Compress OK.")
messagebox.showinfo("Info", "Compress OK.")
else:
messagebox.showwarning("Warn", "Please input folder")
def gui():
app = MyGUI()
app.mainloop()
def main():
gui()
if __name__ =="__main__":
main()
snapshots
Reference
- tkinter demo
- tkinter docs
History
- 20190411: created.
Copyright
- Post author: kezunlin
- Post link: https://kezunlin.me/post/d5c57f56/
- Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.
python gui编程(tkinter)是什么?实例展示Python tkinter教程
之前的文章我们学习了python cgi编程,这篇文章我们就来介绍python gui编程(tkinter)并附上python tkinter教程。
python 提供了多个图形开发界面的库,几个常用 python gui 库如下:
Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。
Jython:Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。Jython 几乎拥有标准的Python 中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 Swing,AWT或者 SWT。Jython 可以被动态或静态地编译成 Java 字节码。
Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。
立即学习“Python免费学习笔记(深入)”;
由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。
import tkinter
创建一个GUI程序
1、导入 Tkinter 模块
2、创建控件
3、指定这个控件的 master, 即这个控件属于哪一个
4、告诉 GM(geometry manager) 有一个控件产生了。
#!/usr/bin/python # -*- coding: UTF-8 -*- import Tkinter top = Tkinter.Tk() # 进入消息循环 top.mainloop()
以上代码执行结果如下图:
以上就是python gui编程(tkinter)是什么?实例展示Python tkinter教程的详细内容,更多请关注php中文网其它相关文章!
Python tkinter 包含的插件类型 & tkinter中可变的变量
tkinter是安装python就自带的一个GUI库,跨平台,虽然简单,我看见网上很多人说学这个GUI库没意思,现在那么多好的GUI库,不过我认为存在即合理,总有学习的理由。想借这个GUI库学学简单的GUI界面设计和python关于面向对象编程的知识。
tkinter包含了一些小插件,如下所述:
插件与说明
Button 可点击的按钮
Canvas 用于绘制或显示图像图像的区域
Checkbutton 可点击的框,其状态可以是选定的或未选定的
Entry 可供用户输入数据的单行文本框
Frame 用于承载其他小插件的容器
Label 用于显示文本的单个行
ListBox 可供用户选择的下拉列表
Menu 下拉菜单
Message 用于显示文本的多个行
Menubutton 下拉菜单中的菜单项
Text 可供用户输入数据的多行文本框
TopLeve l 额外的窗口
tkinter中可变的变量
由于python中的字符串、整数、浮点数以及布尔值都是不可变的,所以tkinter自带了一些类型,可以就地更新,并可以在其值发生改变时通知相关的插件。下面所述即为Python中的不可变类型与tkinter中可变类型。
不可变类型与可变类型
int IntVar
string StringVar
bool BooleanVar
double DoubleVar
且可变类型的值是通过set和get方法来设置和获得的。
python tkinter 绑定回车键
# _*_ coding:utf-8_*_
from Tkinter import *
def submit(ev = None):
p.set(u.get())
root = Tk()
root.title("测试")
frame = Frame(root)
frame.pack(padx=8, pady=8, ipadx=4)
lab1 = Label(frame, text="获取:")
lab1.grid(row=0, column=0, padx=5, pady=5, sticky=W)
#绑定对象到Entry
u = StringVar()
ent1 = Entry(frame, textvariable=u)
ent1.grid(row=0, column=1, sticky=''ew'', columnspan=2)
lab2 = Label(frame, text="显示:")
lab2.grid(row=1, column=0, padx=5, pady=5, sticky=W)
p = StringVar()
ent2 = Entry(frame, textvariable=p)
ent2.grid(row=1, column=1, sticky=''ew'', columnspan=2)
button = Button(frame, text="输入", command=submit, default=''active'')
button.grid(row=2, column=1)
lab3 = Label(frame, text="")
lab3.grid(row=2, column=0, sticky=W)
button2 = Button(frame, text="退出", command=quit)
button2.grid(row=2, column=2, padx=5, pady=5)
#以下代码居中显示窗口
root.update_idletasks()
x = (root.winfo_screenwidth() - root.winfo_reqwidth()) / 2
y = (root.winfo_screenheight() - root.winfo_reqheight()) / 2
root.geometry("+%d+%d" % (x, y))
#以下代码把回车绑定到对象Entry,这样输入完后按回车键就可以看到文字出现在另一个文本框中了。
ent1.bind("<Return>", submit) #注意这里是Return而不是Enter
#root.bind("<Return>", submit) #这句把回车绑定到窗口,无论光标在哪按回车会把文本复制
root.mainloop()
rt = Tk()
ent = Entry(rt)
ent.pack()
rt.mainloop()
关于Python-关于Tkinter中的绑定标签的基本查询和python tkinter标签的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于python gui tkinter快速入门教程 | python tkinter tutorial、python gui编程(tkinter)是什么?实例展示Python tkinter教程、Python tkinter 包含的插件类型 & tkinter中可变的变量、python tkinter 绑定回车键的相关知识,请在本站寻找。
本文标签: