python tkinter中如何像菜单中的一个选项添加快捷键?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python tkinter中如何像菜单中的一个选项添加快捷键?相关的知识,希望对你有一定的参考价值。

据说用bind(),但是不知道具体怎么做,谢谢!
这是我菜单的代码:
m = Menu(root)
root.config(menu = m)

filemenu = Menu(m)
m.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New", command=callback)
filemenu.add_command(label="Open...", command=callback)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=callback)

python中tkinter需要使用accelerator添加菜单的快捷键,该选项仅显示,并没有实现加速键的功能,添加功能需按键绑定,代码如下:

from tkinter import *
root = Tk()
def callback():
    print("~被调用了~")
# 创建一个顶级菜单
menubar = Menu(root)
# 创建一个下拉菜单“文件”,然后将它添加到顶级菜单中
filemenu = Menu(menubar, tearoff=False)
filemenu.add_command(label="打开", command=callback, accelerator=\'Ctrl+N\')
filemenu.add_command(label="保存", command=callback)
filemenu.add_separator()
filemenu.add_command(label="退出", command=root.quit)
menubar.add_cascade(label="文件", menu=filemenu)
# 显示菜单
root.config(menu=menubar)
root.bind_all("<Control-n>", lambda event: print(\'加速键Ctrl+N\'))
mainloop()

效果如下:

备注:accelerator
1. 显示该菜单项的加速键(快捷键)
2. 例如 accelerator = "Ctrl+N"
3. 该选项仅显示,并没有实现加速键的功能(通过按键绑定实现)

参考技术A # 不打印
root.bind_all("<Control-n>", lambda event: My_Print('加速键Ctrl+N'))

# 打印
root.bind("<Control-n>", lambda event: My_Print('加速键Ctrl+N'))

如何在清除现有图像后更新Tkinter中的新图像。

我在名为1.jgp,2.jpg的文件夹中有2个图像。我想写一个python代码,在2秒延迟后,在窗格的同一位置一个接一个地显示所有图像。我试图用图像2.jpg一个接一个地添加相同的代码,但它不起作用。在显示和清除1.jpg之后,我需要在此代码中进行哪些更改才能显示图像2.jpg。我试过以下代码:

from tkinter import *
from PIL import Image, ImageTk
import time

root = Tk()
filename1="1.jpg"
filename2="2.jpg"
canvas = Canvas(width=800, height=800, bg='white')
canvas.pack()
image = Image.open(filename)
photo = ImageTk.PhotoImage(image)
canvas.create_image(250, 250, image=photo)
root.mainloop()
答案

您可以使用Tkinter的after函数在延迟一段时间后调用函数。然后可以在画布上使用函数itemconfig来处理图像的实际更改。

像这样的东西:

from tkinter import *
from PIL import Image, ImageTk

class myGUI(object):
    def __init__(self):
        self.root = Tk()
        self.canvas = Canvas(width=800, height=800, bg='white')
        self.canvas.pack()

        filename="1.jpg"
        image = Image.open(filename)
        self.photo = ImageTk.PhotoImage(image)
        self.img = self.canvas.create_image(250, 250, image=self.photo)

        self.root.after(2000, self.change_photo)
        self.root.mainloop()

    def change_photo(self):
        filename = "2.jpg"
        image = Image.open(filename)

        self.photo = ImageTk.PhotoImage(image)
        self.canvas.itemconfig(self.img, image=self.photo)

if __name__ == "__main__":
    gui = myGUI()

以上是关于python tkinter中如何像菜单中的一个选项添加快捷键?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Tkinter 中将单选按钮添加到子菜单

如何使用 python 3 和 tkinter 模块从右到左对齐菜单栏中的项目?

python3 tkinter中如何设置根窗口标题文字字体及大小和根菜单文字字体及大小?

如何在不单击tkinter python的情况下读取单选按钮值

Python里tkinter如何重置单选按钮?

Python tkinter Entry 小部件状态通过单选按钮切换