吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 833|回复: 3
收起左侧

[求助] python tkinter 右键菜单不显示怎么改

[复制链接]
HDL颌 发表于 2022-1-18 11:58
本帖最后由 HDL颌 于 2022-1-18 17:07 编辑

[Python] 纯文本查看 复制代码
from asyncio import events
import tkinter as tk
from tkinter import INSERT, LEFT, filedialog
from tkinter.filedialog import *
from tkinter.ttk import Treeview
from PIL import Image
class MyApp(tk.Tk):
    def __init__(self):
        super().__init__()
        self.set_window(800, 500)
        self.frame1 = tk.Frame().pack()
        self.set_treeview()
        self.set_text()
        self.set_menu()
    def set_window(win, width, height):
        screenwidth = win.winfo_screenwidth()
        screenheight = win.winfo_screenheight()
        size = '%dx%d+%d+%d' % (width, height,
                                (screenwidth - width)/2, (screenheight - height)/2)
        win.geometry(size)
    def set_treeview(self):  # 列表目录
        tree = Treeview(self.frame1)
        tree_1 = tree.insert("", 0, "0", text="目录", values=("0"))
        tree_2 = tree.insert(tree_1, 0, "1", text="第一个", values=("1"))
        tree_3 = tree.insert(tree_1, 0, "2", text="第二个", values=("2"))
        tree.pack(side=LEFT, fill='y')
        tree.bind("<Button-3>", self.popupmenu)
    def set_text(self):  # 文本编辑
        global content_text
        content_text = tk.Text(self.frame1, width=80, height=10, undo=True)
        content_text.pack(side='left', fill='y', padx=10)
        self.set_scrollbar(content_text)
    def open_file(self, ):  # 选择打开什么文件,返回文件名
        filename = filedialog.askopenfilename()
        f = open(filename, 'r')
        f2 = f.read()
        content_text.insert(INSERT, f2)
        f.close()
    def set_move(self):  # 撤销
        content_text.edit_undo()
        pass
    def save_file(self):  # 保存content_text
        filename = filedialog.asksaveasfilename()
        with open(filename, 'w') as f:
            f.write(content_text.get('1.0', tk.END))
    def set_scrollbar(self, name):  # 滚动条
        self.name = name
        VScroll1 = tk.Scrollbar(self.frame1, orient='vertical',
                                command=self.name.yview)
        VScroll1.place(relx=0.971, rely=0.028,
                       relwidth=0.024, relheight=0.958)
        self.name.configure(yscrollcommand=VScroll1.set)
        pass
    def set_menu(self):  # 菜单栏
        menu_bar = tk.Menu(self.frame1)
        menu_1 = tk.Menu(menu_bar, tearoff=0)
        menu_bar.add_cascade(label='文件', menu=menu_1)
        menu_1.add_command(label='新建', accelerator='Ctrl+N')
        menu_1.add_command(label='打开', accelerator='Ctrl+O',
                           command=self.open_file)
        menu_1.add_command(label='保存', accelerator='Ctrl+S',
                           command=self.save_file)
        menu_1.add_command(label='另存为', accelerator='Shift+Ctrl+S')
        menu_1.add_separator()
        menu_1.add_command(label='退出', accelerator='Alt+F4')
        menu_2 = tk.Menu(menu_bar, tearoff=0)
        menu_bar.add_cascade(label='编辑', menu=menu_2)
        menu_2.add_command(label='撤销', accelerator='Ctrl+Z',
                           command=self.set_move)
        menu_2.add_command(label='恢复', accelerator='Ctrl+Y')
        menu_2.add_separator()
        menu_2.add_command(label='剪切', accelerator='Ctrl+X')
        menu_2.add_command(label='复制', accelerator='Ctrl+C')
        menu_2.add_command(label='粘贴', accelerator='Ctrl+V')
        menu_2.add_separator()
        menu_2.add_command(label='查找', accelerator='Ctrl+F')
        menu_2.add_separator()
        menu_2.add_command(label='全选', accelerator='Ctrl+A')
        self["menu"] = menu_bar
    def set_youjian(self):  # 右键菜单
        global menu_3
        menu_3 = tk.Menu(self, tearoff=0)
        menu_3.add_command(label='新建',)
    def popupmenu(self):
        menu_3.post(self.x_root, self.y_root)
if __name__ == '__main__':
    MyApp().mainloop()

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

知心 发表于 2022-1-18 13:32
用代码标签报一下,看着很不舒服
Prozacs 发表于 2022-1-19 17:20
from asyncio import events
import tkinter as tk
from tkinter import INSERT, LEFT, filedialog
from tkinter.filedialog import *
from tkinter.ttk import Treeview
from PIL import Image
class MyApp(tk.Tk):
    def __init__(self):
        super().__init__()
        self.set_window(800, 500)
        self.frame1 = tk.Frame().pack()
        self.set_treeview()
        self.set_text()
        self.set_menu()
        self.menu_3 = tk.Menu(self, tearoff=0)
        self.menu_3.add_command(label='新建', )
    def set_window(win, width, height):
        screenwidth = win.winfo_screenwidth()
        screenheight = win.winfo_screenheight()
        size = '%dx%d+%d+%d' % (width, height,
                                (screenwidth - width)/2, (screenheight - height)/2)
        win.geometry(size)
    def set_treeview(self):  # 列表目录
        tree = Treeview(self.frame1)
        tree_1 = tree.insert("", 0, "0", text="目录", values=("0"))
        tree_2 = tree.insert(tree_1, 0, "1", text="第一个", values=("1"))
        tree_3 = tree.insert(tree_1, 0, "2", text="第二个", values=("2"))
        tree.pack(side=LEFT, fill='y')
        tree.bind("<Button-3>", self.popupmenu)
    def set_text(self):  # 文本编辑
        global content_text
        content_text = tk.Text(self.frame1, width=80, height=10, undo=True)
        content_text.pack(side='left', fill='y', padx=10)
        self.set_scrollbar(content_text)
    def open_file(self, ):  # 选择打开什么文件,返回文件名
        filename = filedialog.askopenfilename()
        f = open(filename, 'r')
        f2 = f.read()
        content_text.insert(INSERT, f2)
        f.close()
    def set_move(self):  # 撤销
        content_text.edit_undo()
        pass
    def save_file(self):  # 保存content_text
        filename = filedialog.asksaveasfilename()
        with open(filename, 'w') as f:
            f.write(content_text.get('1.0', tk.END))
    def set_scrollbar(self, name):  # 滚动条
        self.name = name
        VScroll1 = tk.Scrollbar(self.frame1, orient='vertical',
                                command=self.name.yview)
        VScroll1.place(relx=0.971, rely=0.028,
                       relwidth=0.024, relheight=0.958)
        self.name.configure(yscrollcommand=VScroll1.set)
        pass
    def set_menu(self):  # 菜单栏
        menu_bar = tk.Menu(self.frame1)
        menu_1 = tk.Menu(menu_bar, tearoff=0)
        menu_bar.add_cascade(label='文件', menu=menu_1)
        menu_1.add_command(label='新建', accelerator='Ctrl+N')
        menu_1.add_command(label='打开', accelerator='Ctrl+O',
                           command=self.open_file)
        menu_1.add_command(label='保存', accelerator='Ctrl+S',
                           command=self.save_file)
        menu_1.add_command(label='另存为', accelerator='Shift+Ctrl+S')
        menu_1.add_separator()
        menu_1.add_command(label='退出', accelerator='Alt+F4')
        menu_2 = tk.Menu(menu_bar, tearoff=0)
        menu_bar.add_cascade(label='编辑', menu=menu_2)
        menu_2.add_command(label='撤销', accelerator='Ctrl+Z',
                           command=self.set_move)
        menu_2.add_command(label='恢复', accelerator='Ctrl+Y')
        menu_2.add_separator()
        menu_2.add_command(label='剪切', accelerator='Ctrl+X')
        menu_2.add_command(label='复制', accelerator='Ctrl+C')
        menu_2.add_command(label='粘贴', accelerator='Ctrl+V')
        menu_2.add_separator()
        menu_2.add_command(label='查找', accelerator='Ctrl+F')
        menu_2.add_separator()
        menu_2.add_command(label='全选', accelerator='Ctrl+A')
        self["menu"] = menu_bar
    def popupmenu(self,e):
        self.menu_3.post(e.x_root, e.y_root)
if __name__ == '__main__':
    MyApp().mainloop()
 楼主| HDL颌 发表于 2022-1-22 11:57
Prozacs 发表于 2022-1-19 17:20
from asyncio import events
import tkinter as tk
from tkinter import INSERT, LEFT, filedialog

成了,谢谢你
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-29 15:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表