RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 768918
Accepted
Gleb
Gleb
Asked:2020-01-10 21:54:31 +0000 UTC2020-01-10 21:54:31 +0000 UTC 2020-01-10 21:54:31 +0000 UTC

tkinter 中的事件问题(python 3)

  • 772

有这个代码

from tkinter import *
from re_text import *

root=Tk()

def func(event):
    print("123")
    def fi(event):
        top_read(root,l['text'],l)
    l=Label(root, text="hello")
    l.bind("<Button-1>", fi)
    l.pack()
_list=Listbox(root)
_list.insert(END, "test element")
_list.bind("<<ListboxSelect>>", func)
_list.pack()
root.mainloop()

re_text 模块:

from tkinter import Toplevel, Text, FLAT, Tk, END
from tkinter.ttk import Button

class top_read(Toplevel):
    def __init__(self, master, text, widget):
        self.text = text
        self.widget = widget
        super().__init__(master)
        self.title("Редактировать строку")
        self.gui()
    def gui(self):
        self.geometry("680x300")
        self.ob = Text(self, relief=FLAT, height=17, width=72)
        self.ob.insert('end',self.text)
        self.b = Button(self, text="Сохранить", command=self._command_for_button)
        self.b.place(x=600,y=261)
        self.ob.place(x=15,y=9)
    def _command_for_button(self):
        self.widget['text'] = self.ob.get(1.0,END)[:-1]
        self.destroy()

问题:

当单击带有文本 hello 的标签后,编辑窗口按预期出现。如果您在此窗口中选择文本,那么 func 函数将以某种神奇的方式(或不是)启动。如果我们允许将 ListboxSelect 替换为 Button-1,则不会观察到“魔法”。

请帮助理解。

python
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Twiss
    2020-01-10T23:40:25Z2020-01-10T23:40:25Z

    当您选择一个元素 ListboxSelect时,将执行一项功能func,直到此选择终止,此功能将再次重复第二次。为了解决所有问题,请使用信号<ButtonRelease-1>或<Button-1>.

    代码示例:

    from tkinter import *
    from tkinter.ttk import Button
    
    
    class TopRead(Toplevel):
        def __init__(self, text, widget):
            super().__init__()
            self.text = text
            self.widget = widget
    
            self.title("Редактировать строку")
            self.gui()
    
        def gui(self):
            self.geometry("680x300")
            self.ob = Text(self, relief=FLAT, height=17, width=72)
            self.ob.insert('end', self.text)
            self.b = Button(self, text="Сохранить", command=self._command_for_button)
            self.b.place(x=600,y=261)
            self.ob.place(x=15,y=9)
    
        def _command_for_button(self):
            self.widget['text'] = self.ob.get(1.0, END)[:-1]
            self.destroy()
    
    class Main(Tk):
        def __init__(self):
            super().__init__()
            _list = Listbox(self)
            _list.insert(END, "test element")
            _list.pack()
            _list.bind("<ButtonRelease-1>", self.func)
    
        def func(self, event):
            print("123")
            self.l = Label(self, text="hello")
            self.l.bind("<Button-1>", self.fi)
            self.l.pack()
    
        def fi(self, event):
                self.text = self.l['text']
                self.g = TopRead(self.text, self.l)
    
    
    if __name__ == '__main__':
        root = Main()
        root.mainloop()
    
    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5