我知道通过使用command
来使用Tkinter按钮调用函数很容易,但是它与图像的工作方式不同。我相信我的问题很简单,如何单击图片即可调用函数?
这是代码。我想单击picture
,这将调用make_newwindow
函数。
from tkinter import *
import tkinter as tk
def make_newwindow():
global newwindow
root.withdraw()
newwindow = tk.Toplevel()
newwindow.title('Nível da grama região 2')
newwindow.geometry('580x520')
root = tk.Tk()
root.title('Nível da grama região 1')
root.geometry("580x520")
picture = PhotoImage(file="picture.png")
label0 = Label(root, image=picture, borderwidth=0, highlightthickness=0)
label0.place(x=62, y=205)
root.mainloop()
答案 0 :(得分:1)
在我看来,最简单的方法是将图像附加到Button
而不是Label
小部件,因为您要做的就是指定一个{{1} }参数引用您要在单击时调用的函数。
这是我的意思:
command=
如果出于某种原因确实要使用import tkinter as tk
def make_newwindow():
global newwindow
raiz.withdraw()
newwindow = tk.Toplevel()
newwindow.title('Nível da grama região 2')
newwindow.geometry('580x520')
raiz = tk.Tk()
raiz.title('Nível da grama região 1')
raiz.geometry("580x520")
picture = tk.PhotoImage(file="picure.png")
btn0 = tk.Button(raiz, image=picture, borderwidth=0, highlightthickness=0,
command=make_newwindow)
btn0.place(x=62, y=205)
raiz.mainloop()
,则可以调用通用的bind()
小部件方法以将函数附加到鼠标按钮上1单击events。
要执行此操作,请更改上面的代码,以便它创建一个Label
(就像您的代码一样),还可以如图所示调用Label
。请注意如何通过lambda
表达式动态创建回调函数。这是必需的,因为您的bind()
不接受任何参数。但是,make_newwindow()
事件处理程序回调函数都传递了一个tkinter
参数(请参见Events and Bindings)。由于这里不需要使用该参数,因此该参数将被忽略,并被命名为event
(Python的约定)。
_
答案 1 :(得分:0)
这怎么样? 这是有效的完整代码
import tkinter as tk
from tkinter import *
def make_newwindow(data):
global newwindow
root.withdraw()
newwindow = tk.Toplevel()
newwindow.title('Nível da grama região 2')
newwindow.geometry('580x520')
root = tk.Tk()
root.title('Nível da grama região 1')
root.geometry("580x520")
picture = PhotoImage(file="Capture001.png")
label0 = Label(root, image=picture, borderwidth=0, highlightthickness=0)
label0.place(x=62, y=205)
label0.pack()
label0.bind('<Button-1>', func=make_newwindow)
root.mainloop()
data
是有关所发生偶数的信息