秋月明 发表于 2021-5-8 10:17:56

combobox获取下拉框的索引值

代码如下:
    #设置“朝向”列表框
    label_orient = Label(frame_prehouse,text="朝向:",font=("宋体",15))
    label_orient.grid(row=2,columnspan=2,sticky=W,padx=160,pady=20)
    Orient = StringVar()
    list_orient = ttk.Combobox(frame_prehouse, textvariable=Orient, state='readonly', width=12)
    list_orient.grid(row=2,columnspan=2,sticky=E)
    list_orient["value"] = ( '东', '东北', '东南', '北', '南', '西', '西北', '西南')
    list_orient.current(0)
    def getorient(event):
      return list_orient.current()   
    print(getorient())
    list_orient.bind("<<ComboboxSelected>>", getorient)
这个方法不能够动态获取到下拉列表框的索引值...,比如我点击“东南”选项,想通过getorient方法获取到2这个索引值,目前方法获取不到

z5560636 发表于 2021-5-8 10:24:45

么写过,但是看出错提示,你没有绑定事件
逻辑上来说,应该有个下拉框数值改变事件,具体可以百度找找。

秋月明 发表于 2021-5-8 10:32:13

z5560636 发表于 2021-5-8 10:24
么写过,但是看出错提示,你没有绑定事件
逻辑上来说,应该有个下拉框数值改变事件,具体可以百度找找。

您好,我试着print(getorient())   ,报错是这样的. missing 1 required positional argument: 'event'

阿奇_o 发表于 2021-5-8 10:51:47

1. def 要写在前面,组件前面
2. 触发函数,通常不用return,而是用传递函数或直接在内部处理,如使用Label显示

参考:
root = Tk()
root.geometry("500x400")

frame_prehouse = ttk.Frame(root, )
frame_prehouse.grid(row=0, column=0)

# 设置“朝向”列表框
def getorient(event):
    lb = Label(frame_prehouse, text=list_orient.get())
    lb.grid(row=3, column=1)
    # print(list_orient.get())

# label_orient = ttk.Label(frame_prehouse,text="朝向:",font=("宋体",15))
# label_orient.grid(row=2,columnspan=2,sticky=W,padx=160,pady=20)
Orient = StringVar()
list_orient = ttk.Combobox(frame_prehouse, textvariable=Orient, state='readonly', width=12)
list_orient["value"] = ( '东', '东北', '东南', '北', '南', '西', '西北', '西南')
list_orient.grid(row=2,columnspan=2,sticky=E)
list_orient.current(0)
list_orient.bind("<<ComboboxSelected>>", getorient)

root.mainloop()
页: [1]
查看完整版本: combobox获取下拉框的索引值