Python 2.7 如何在tkinter python中获取放置在网格中的小部件的行号和列号?
我在网格中放置了多个组合框,如下所示Python 2.7 如何在tkinter python中获取放置在网格中的小部件的行号和列号?,python-2.7,tkinter,combobox,Python 2.7,Tkinter,Combobox,我在网格中放置了多个组合框,如下所示 self.c_arr[row,column] = ttk.Combobox(what_ev, textvariable=self.c_it_val[row,column], values=list(self.c_list[row,column].keys())) self.c_arr[row,column].bind("<<ComboboxSelected>>", lambda x:self.c_capt
self.c_arr[row,column] = ttk.Combobox(what_ev,
textvariable=self.c_it_val[row,column],
values=list(self.c_list[row,column].keys()))
self.c_arr[row,column].bind("<<ComboboxSelected>>", lambda
x:self.c_capture(what_ev, <Want to pass row, column information as well>))
这些组合框存储在数组中,对应于eg的行、列,如下所示
self.c_arr[row,column] = ttk.Combobox(what_ev,
textvariable=self.c_it_val[row,column],
values=list(self.c_list[row,column].keys()))
self.c_arr[row,column].bind("<<ComboboxSelected>>", lambda
x:self.c_capture(what_ev, <Want to pass row, column information as well>))
self.c_arr[row,column]=ttk.Combobox(what_ev,
textvariable=self.c_it_val[行,列],
values=list(self.c_list[row,column].keys())
self.c_arr[行,列].bind(“,lambda
x:self.c_捕获(what_ev,))
无论何时调用/触发绑定到combobox的函数,我都希望将相应的行、列编号与其他变量一起传递给被调用的函数
如何获取/检索放置在网格上的相应窗口小部件行、列号/位置详细信息
更新:使用下面的示例代码添加
import Tkinter
from Tkinter import *
from Tkinter import Tk, StringVar
import ttk
import tkFont
class Application:
def __init__(self, parent):
self.parent = parent
self.sco1 = None
self.c_int_val = StringVar()
self.box = {}
self.box_value = {}
self.box_int_list = {}
self.combo()
def combo(self):
for row in range (3):
for column in range(3):
self.box_int_list[row,column] = {key: None for key in range(1,10)}
self.box_value[row,column] = StringVar()
self.box_value[row,column].set("0")
self.box[row,column] = ttk.Combobox(self.parent, textvariable=self.box_value[row,column], values = list(self.box_int_list[row,column].keys()), state='readonly', width=39)
self.box[row,column].bind("<<ComboboxSelected>>", lambda x:self.print_selected_value("Eurekaa", len(self.box_int_list[row,column])))
self.box[row,column].grid(row=row, column=column)
def print_selected_value(self, what_name, list_len, *args):
print "Value selected is: %s"%(self.box[row,column].get())
print what_name
print list_len
if __name__ == '__main__':
root = Tk()
app = Application(root)
root.mainloop()
导入Tkinter
从Tkinter进口*
从Tkinter导入Tk,StringVar
导入ttk
导入tkFont
班级申请:
定义初始化(自身,父级):
self.parent=parent
self.sco1=无
self.c_int_val=StringVar()
self.box={}
self.box_值={}
self.box_int_list={}
self.combo()
def组合(自我):
对于范围(3)中的行:
对于范围(3)中的列:
self.box_int_list[row,column]={key:None表示范围(1,10)中的键}
self.box_值[行,列]=StringVar()
self.box\u值[行,列].set(“0”)
self.box[row,column]=ttk.Combobox(self.parent,textvariable=self.box\u value[row,column],values=list(self.box\u int\u list[row,column].keys()),state='readonly',width=39)
self.box[row,column].bind(“,lambda x:self.print\u selected\u value(“Eurekaa”,len(self.box\u int\u list[row,column]))
self.box[行,列].grid(行=行,列=列)
def print_selected_值(self、what_name、list_len、*args):
打印“所选值为:%s”%(self.box[行,列].get())
打印你的名字
打印列表
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
root=Tk()
app=应用程序(根)
root.mainloop()
但由于我无法获取行、列信息,因此无法从所选组合框中获取值。如何做到这一点?如果将事件传递给回调,则可以在与事件关联的小部件上使用
grid\u info
def callback(event, row, column):
print(row, column)
cb.bind("<<ComboboxSelected>>", callback)
@TkinterPythonFans:关于如何获得这些信息有什么想法或意见吗?小部件是否提供了一些可以检索行、列信息的内部函数。如果没有其他解决方法,如何将这些信息传递给触发绑定函数?非常感谢您的评论/澄清,这真的很有帮助!