Python:在Pmw RadioSelect中引用单个标签
我想创建一个悬停框(或信息框),当用户将鼠标光标放在Pmw RadioSelect标签的顶部时,它会打开。例如,当光标放在“Primary”的顶部时,程序会打开一个信息框,解释“Primary”的含义 问题:我不知道如何访问RadioSelect对象内的各个标签。我需要将一个方法绑定到各个标签,但我不知道如何引用它们 额外:我怎么能自己解决这个问题?我尝试使用dir()查看RadioSelect属性,并联机阅读了Pmw手册,但找不到相关信息 编辑这是我迄今为止发现的:声明标签只有在明确设置其位置时才开始存在: labelpos 初始化选项。指定放置标签组件的位置 如果无,则不会创建标签组件。默认值为None 明确设置后,例如:Python:在Pmw RadioSelect中引用单个标签,python,tkinter,pmw,Python,Tkinter,Pmw,我想创建一个悬停框(或信息框),当用户将鼠标光标放在Pmw RadioSelect标签的顶部时,它会打开。例如,当光标放在“Primary”的顶部时,程序会打开一个信息框,解释“Primary”的含义 问题:我不知道如何访问RadioSelect对象内的各个标签。我需要将一个方法绑定到各个标签,但我不知道如何引用它们 额外:我怎么能自己解决这个问题?我尝试使用dir()查看RadioSelect属性,并联机阅读了Pmw手册,但找不到相关信息 编辑这是我迄今为止发现的:声明标签只有在明确设置其位
self.rs = Pmw.RadioSelect(parent, labelpos = 'w')
你可以参考它
self.rs.component('标签')
但我仍然不知道如何接触到个人标签
编辑2:诀窍就是将无线电选择“项”分配到变量中,如接受的答案所示:
self.cb1 = self.radio_select.add("text")
将“项”赋给变量后,只需将方法绑定到变量,如下所示:
self.balloon = Pmw.Balloon(self, initwait=500, relmouse='both')
self.balloon.bind(self.cb1, "Balloon text example")
如果我很了解您的问题,我认为您正在寻找:
Pmw.RadioSelect
中的各个标签中使用自己的术语)Pmw.Balloon()
,并将其绑定到各个复选按钮(或您所称的标签)。我重新编程,正如你在下面看到的,但使用了另一种方法。我的意思是,我主要依赖于返回组件小部件的。然后我将Pmw.Balloon()
的实例绑定到add()
返回的值。这样做,您已经为自己提供了一种单独访问复选按钮的方法(如果您愿意,您可以更多地使用它)access\u to\u labels\u individually()中所示,
我使用它作为回调方法来显示您选择的复选按钮的名称;当然,您也可以根据需要使用它)tkinter.Checkbutton()
实例上(无论是否选中)相关的正在运行的程序的屏幕截图:
我感谢您的努力,并且喜欢使用Pmw气球的想法。我想我以后会把它应用到我的程序中。然而,你的回答并没有回答我的问题。问题是如何访问或引用Pmw RadioSelect中的单个标签。我把你的答案填上去了,但是如果有人对这个问题有直接的答案,我会等一等。如果我理解了你的编辑,你是想访问Primary?您要查找的复选按钮必须使用
Pmw.RadioSelect()
绘制,这与我所做的不同?如果是这种情况,则可以使用getcurselection()
或getvalue()
方法。如果您不了解手册中这两种方法的工作原理,我可以为您提供一个代码示例@CrebitI根据你说的重新编码了程序。但当我讲完的时候,我想我(再次)误解了你所说的标签。我回来后会继续解决。请让我知道,如果这是你正在寻找或没有@你改变了密码,克里比接受了答案。在RadioSelect中获取值时,我没有遇到任何困难。相反,我不知道如何将方法绑定到RadioSelect的“文本”部分。但通过在添加它们时将它们分配给变量(self.cb1=self.checkbuttons.add('Primary')
),我后来能够引用它们并将方法绑定到它们。谢谢你的热情和透彻的回答!我回来了。你的意思是:但我仍然不知道如何到达个别标签?我问这个问题是因为我相信你已经在self.rs.component('label')
中回答了这个问题,所以…?嗨,比尔!我希望我的问题没有含糊不清。通过访问各个标签,我的意思是:self.balloon.bind(self.cb1,“balloon text”)
。我试图找到一种方法,在你的答案中有一个类似self.cb1的引用,以便能够将一个方法绑定到它。现在,当我看到我可以像你在回答中那样分配一个变量时,我觉得很傻:self.cb1=self.checkbuttons.add('Primary')
'''
Created on Jun 18, 2016
@author: Billal BEGUERADJ
'''
# -*- coding: utf-8 -*-
import Pmw
import tkinter as tk
class Begueradj:
def __init__(self, parent):
self.balloon = Pmw.Balloon(parent)
# Create and pack a vertical RadioSelect widget, with checkbuttons.
self.checkbuttons = Pmw.RadioSelect(parent,
buttontype = 'checkbutton',
orient = 'vertical',
labelpos = 'w',
command = self.access_to_labels_individually,
hull_borderwidth = 2,
hull_relief = 'ridge',
)
self.checkbuttons.pack(side = 'left', expand = 1, padx = 10, pady = 10)
# Add some buttons to the checkbutton RadioSelect
self.cb1 = self.checkbuttons.add('Primary')
self.cb2 = self.checkbuttons.add('Secondary')
self.cb3 = self.checkbuttons.add('Tertiary')
# Bind the Balloon instance to each widget
self.balloon.bind(self.cb1, 'Primary:\n This is our primary service')
self.balloon.bind(self.cb2, 'Secondary:\n This is our primary service')
self.balloon.bind(self.cb3, 'Tertiary:\n This is our primary service')
# You can use getvalue() or getcurselection() to access individual labels
def access_to_labels_individually(self, tag, state):
print(self.checkbuttons.getvalue())
# Main program starts here
if __name__ =='__main__':
begueradj = Pmw.initialise(fontScheme = 'pmw1')
begueradj.title('Billal BEGUERADJ')
d = Begueradj(begueradj)
begueradj.mainloop()