python编程急求!!:在tkinter中,怎样将函数与不同的button链接,使点击选项后在d窗中执行相应函数?

python编程急求!!:在tkinter中,怎样将函数与不同的button链接,使点击选项后在d窗中执行相应函数?,第1张

def func():

pass

btn = Button(root,text = "磨埋仿液猜xxx"瞎纤,command = func)

btn_2 = Button(root,text = "xxx",command = func)

第一,启动Python自带的集中开发环境IDLE,然后点击File-->New File,并在脚本框中输入如下代码,用于创建窗口和按钮。

from tkinter import *  # 从tkinter库中导入所有函数

window1=Tk()  # 创建一个窗口

window1.title('test1')  # 设置窗口标题

window1.geometry('500x500+100+100')  # 设置窗口大小x和左顶距离+

def Jason():  # 创建一个函数

 print('Come on,baby')

button1=Button(window1,text='点我啊',command=Jason)  # 设置按钮属性

button1.pack()  # 设置显示按钮

window1.mainloop()  # 设置窗口循环显示

Python创建窗口按钮和绘制画布直线

第二,保存和运行上述脚本,得到如下窗口和窗口中的按钮“点我啊”。

Python创建窗口按钮和绘制画布直线

第三,点击“点我啊”按钮,会在IDLE中显示“神大码Come on, baby”.

Python创建窗口按钮和绘制画布直线

第四,在IDLE中再次点击File-->New File,并在脚本中输入如下代码,用于创建窗口画布和在画布上绘制直线。

from tkinter import *

window1=Tk()

window1.title('test2')

canvas1=Canvas(window1,width=500,height=500,bg='pink')  # 设置画布

canvas1.pack()  # 显示画布

# 利用create_line()在画布上绘游哪制直线

canvas1.create_line(100,100,400,100,width=5,fill='red')

canvas1.create_line(100,200,400,200,width=15,fill='green')

canvas1.create_line(100,300,400,300,width=35,fill='blue')

window1.mainloop()

Python创建窗口按钮和绘制画布直线

第五,仿卜保存和运行上述脚本,可以得到如下图形,画布中绘制了“红 绿 蓝”三条线。

Python创建窗口按钮和绘制画布直线

tkinter 使用 <modifier-type-detail> 用于描述事件。

字段是事件说明符中最重要的部分。它指定了我们希望绑定的事件类型,可以是诸如 Button Key 之类的用户 *** 作,也可以是诸如 Enter Configure 等其他窗口管理器事件。 和字段用于提供其他信息,在许多情况下可以省略。还有多种方法可以简化事件字符串。例如,要匹配键盘键,您可以省去尖括号(除非是空格或尖括号不可省略),而只需按原样使用键即可。

下面讨论一些常见的事件。

Button 1 是最左边的(leftmost)按钮, Button 2 是中间按钮(如果有), Button 3 是最右边的按钮。当您在小部件上按下鼠标按钮时,tkinter 将自动“抓住”(grab)鼠标指针(the mouse pointer),随后即使将鼠标移到当前窗口小部件之外,只要按住鼠标按钮,随后的鼠标事件(例如,Motion 和 Release 事件)就会发送到当前小部件。鼠标指针的当前位置(相对于小部件)由传递给回调的事件对象的 x y 成员变量提供。( <Button-1>= <ButtonPress-1>= <1>)。

下表列出常见的几个事件:

看一个例子:

实际上,您可以在四个不同级别上创建绑定:

还可以使用 Protocols 绑定事件。最常用的 protocol 称为 WM_DELETE_WINDOW ,用于定义当用户使用窗口管理器显式关闭窗口时发生的情况。

您镇帆可以使用 protocol 方法来为此协议安装处理程序(小部件必须是根或 Toplevel 插件):

一旦安装了自己的处理程序,tkinter 将不再自动关闭窗口。相反,您可以显示一个消息框,询问用户是否应保存当前数据,或者在某些情况下,只需忽略请求即可。要从此处理程序关闭窗口,只需调用窗口的 destroy 方法:

实际上,您可以在四个不同御拍雹级别上创建绑定:

例如,您可以使用 bind_all 为 F1 键创建一个绑定,因此您可以在应用程序的任何地方提供帮助。但是,如果您为同一个键创建多个绑定,或者提供重叠的绑定,会发生什么呢?

首先,在这四个级别中的每个级别上,tkinter 都会选择可用绑定的“最匹配”。 例如,如果您为 <Key>和 <Return>事件创建实例绑定,则在按下 Enter 键时将仅调用第二个绑定。

但是,如果将 <Return>绑定添加到顶级窗口小部件,则两个绑定都将被调用。tkinter 首先在实例级别调用最佳绑定,然后在顶级窗口级别调用最佳绑定,然后在类级别调用最佳绑定(通常是标准绑定),最后在应用程序级别调用最佳可用绑定。因此,在极端情况下,单个事件可能会调用四个事件处理程序。

除了事件绑定,tkinter 还支持一种称为协议处理程序(protocol handlers)的机制。在这里,贺谨术语协议(protocol)是指应用程序和窗口管理器之间的交互。最常用的协议称为 WM_DELETE_WINDOW ,用于定义当用户使用窗口管理器显式关闭窗口时发生的情况。

您可以使用协议方法来为此协议安装处理程序(小部件必须是 root 或者 Toplevel 小部件):

一旦安装了自己的处理程序,tkinter 将不再自动关闭窗口。相反,您可以例如显示一个消息框,询问用户是否应保存当前数据,或者在某些情况下,只需忽略请求即可。 要从此处理程序关闭窗口,只需调用窗口的 destroy 方法。

请注意,即使您没有在顶级窗口上注册 WM_DELETE_WINDOW 的处理程序,该窗口本身也将像往常一样被销毁(以可控的方式,不同于 X)。但是,从Python 1.5.2开始,Tkinter不会破坏相应的小部件实例层次结构,因此始终自己注册一个处理程序是一个好主意:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12392018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存