我正在使用tkinter。當使用我的程序的人從下拉菜單(使用OptionMenu
創建)中進行選擇時,根據所做的選擇,我想要出現Entry
字段。因此,如果他們從菜單中選擇a
,則應出現一個Entry
字段,以便他們可以輸入數字,如11.6
。使用tkinter,如何通過選項菜單選擇添加或刪除條目或標籤?
然後,如果用戶從選項菜單中選擇b
,我想要顯示2個Entry
字段。
我一直試圖用OptionMenu
的command=function
參數來做到這一點,但我認爲它不起作用,因爲我試圖在啓動的函數中創建和編輯條目。
順便說一句,如果用戶在選擇'a'和'b'之間切換,代碼仍然可以工作 - 這是我遇到的問題。
代碼:
from tkinter import *
root = Tk()
rc = 0
types = ['a', 'b', 'c']
type_header = Label(root, text='Select Type:', font='-weight bold')
type_header.grid(row=rc, column=0,columnspan=2, sticky=W)
rc += 1
tvar0 = StringVar(root)
tvar1 = StringVar(root)
tvar2 = StringVar(root)
type_label_0 = Label(root, text='row1:')
type_label_0.grid(row=rc, column=0, sticky=E)
type_list = OptionMenu(root, tvar0, *types, command=optc)
type_list.config(width=15)
type_list.grid(row=rc, column=1, sticky=W)
rc += 1
type_label_1 = Label(root, text='row2:')
type_label_1.grid(row=rc, column=0, sticky=E)
type_list = OptionMenu(root, tvar1, *types, command=optc)
type_list.config(width=15)
type_list.grid(row=rc, column=1, sticky=W)
rc += 1
def optc(v):
if v == 'a':
# if option 'a' selected, just have one label, and one entry box
t0_label1 = Label(root, text=' temperature:')
t0_label1.grid(row=1, column=2, sticky=E)
t0_field1 = Entry(root)
t0_field1.grid(row=1, column=3, sticky=W)
t0_field1.config(width=7)
if v == 'b':
# if option 'b', then 2 labels and 2 entry boxes
t0_label1 = Label(root, text=' height:')
t0_label1.grid(row=1, column=2, sticky=E)
t0_field1 = Entry(root)
t0_field1.grid(row=1, column=3, sticky=W)
t0_field1.config(width=7)
t0_label2 = Label(root, text=' width:')
t0_label2.grid(row=1, column=2, sticky=E)
t0_field2 = Entry(root)
t0_field2.grid(row=1, column=3, sticky=W)
t0_field2.config(width=7)
你應該發佈你的代碼。 –
添加了代碼。 – jbren
在調用它之前定義一個函數。 –