Python中文
首页
教程
问答
标签
搜索
登录
注册
如何基于框架绑定到类对象内的rightclick事件
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在开发一个类,它通过在一个框架中嵌入多个小部件来支持多字体按钮。现在,我试图处理调用<code>bind()</code>方法的类实例,但我无法让它工作。我认为该类将简单地从框架继承<code>bind()</code>方法,但在这个实例中它似乎不起作用。当我右键单击第二个按钮(类实例)时,我没有得到打印的语句。我做错了什么? 复制问题的样本:</p> <pre><code>import tkinter as tk class ButtonF(tk.Frame): def __init__(self, master=None, **options): self.command = options.pop('command', None) text = options.pop('text', '') tk.Frame.__init__(self, master, **options) self.b = tk.Button(master, text=text, command=self.command) self.bind('<Button-1>', self._click) self.bind('<ButtonRelease-1>', self._release) self.b.pack() def _click(self): self.config(relief=tk.SUNKEN) if self.command: self.command() def _release(self): self.config(relief=tk.RAISED) def bind(self, *a, **kw): tk.Frame.bind(self, *a, **kw) if __name__ == '__main__': root = tk.Tk() root.title('Frame Button') root.but1 = tk.Button(root, text='Button 1 (Regular)', command=lambda *a:print('Button 1 Click!')) root.but1.pack(side=tk.LEFT) root.but2 = ButtonF(root, text='Button 2 (ButtonF)', command=lambda *a:print('Button 2 Click!')) # root.but2.pack(side=tk.LEFT) root.but1.bind('<Button-3>', lambda *a: print('Button 1 Right-Click!')) root.but2.bind('<Button-3>', lambda *a: print('Button 2 Right-Click!')) #### THIS DOESN'T WORK #### root.mainloop() </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>最后一个技巧是绑定到框架和按钮。因此,绑定到<code>self</code>和<code>self.b</code>。 为什么?嗯,你必须绑定到框架上,以防你点击了框架中不在按钮下的部分。如果您单击按钮本身(即,不在框架的一部分),则必须绑定到按钮。 因此,两个绑定对于正确的解决方案是必要的</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
9 回答
无法使用Django\u mssql\u后端迁移到外部hos
2 回答
无法使用Django&Python3.4连接到MySql
10 回答
无法使用Django+nginx上载媒体文件
4 回答
无法使用Django1.6导入名称模式
6 回答
无法使用Django1.7和mongodb登录管理站点
4 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
9 回答
无法使用Djangockedi验证CBV中的字段
1 回答
无法使用Djangocketditor上载图像(错误400)
1 回答
无法使用Djangocron进行函数调用
9 回答
无法使用Djangofiler djang上载文件
3 回答
无法使用Djangokronos
2 回答
无法使用Djangomssql provid
6 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
6 回答
无法使用Djangomssq迁移Django数据库
4 回答
无法使用Djangonox创建用户
4 回答
无法使用Djangopyodb从Django查询SQL Server
9 回答
无法使用Djangopython3ldap连接到ldap
4 回答
无法使用Djangoredis连接到redis
4 回答
无法使用Django中的FK创建新表
6 回答