2016-03-08 127 views
0
  1. 我对使用Python-Tkinter很新颖。
  2. 我想创建一个框架工作,其中基于一些用户输入的小部件需要改变。
  3. 例如,首先询问用户是否要选择option1或option2。
  4. 如果选择了option1,那么应该执行一个命令/函数。同样,如果选择了选项2,则不同的功能应该起作用。
  5. 同样,如果我在选项1和选项2之间切换,函数/命令应该相应地更改/取消禁用。
  6. 下面是我试过的一段代码,但是当我选择option1时,它会执行option1命令/函数。
  7. 然后当我选择option2时,option1命令仍然保留并且option2命令打开。
  8. 如果我进一步切换,所有的窗口不断添加到前一个窗口。
  9. 如何基本上禁用/杀死选项根据单选按钮的选择?

代码:如何在Python-Tkinter中单击RadioButton时启动/禁用命令/函数?

from Tkinter import * 

root = Tk() 
v = IntVar() 

frame = Frame(root) 
frame.pack() 

Label(root, 
     text="What You Want To Create: ", 
     justify = LEFT, 
     padx = 0).pack() 


def enableEntryComObjName(): 
    entry = Entry() 
    entry.pack(side='bottom') 
    entry.configure(state="normal")  
    entry.update() 

def singlecomponent(): 
    #selection = "Which Single Component/Object You Wanted To Create: " 
    #label.config(text = selection) 
    Label(root, 
      text="Which Single Component/Object You Wanted To Create: ", 
      justify = LEFT, 
      padx = 0).pack() 
    Radiobutton(
       text="Transaction Object", 
       padx= 20, 
       variable=v, 
       value=1).pack(anchor=W) 
    #selection = "Enter The Component/Object Name You Wanted To Create: " 
    #label.config(text = selection) 
    Label(root, 
      text="Enter The Component/Object Name You Wanted To Create: ", 
      justify = LEFT, 
      padx = 0).pack() 
    enableEntryComObjName() 

def completecomponent(): 
    Label(root, 
      text="How Many Boxes You Want To Create: ", 
      justify = LEFT, 
      padx = 0).pack() 
    enableEntryComObjName() 
    Label(root, 
      text="What Type Of Interface You Wanted To Create: ", 
      justify = LEFT, 
      padx = 0).pack() 
    Radiobutton(root, 
      text="Default Interface", 
      padx= 20, 
      variable=v, 
      value=1, 
      command=singlecomponent).pack(anchor=W) 
    Radiobutton(root, 
      text="User Defined Interface", 
      padx = 20, 
      variable=v, 
      value=2, 
      command=completevip).pack(anchor=W) 


Radiobutton(root, 
      text="Single Component", 
      padx= 20, 
      variable=v, 
      value=1, 
      command=singlecomponent).pack(anchor=W) 
Radiobutton(root, 
      text="Complete Component", 
      padx = 20, 
      variable=v, 
      value=2, 
      command=completecomponent).pack(anchor=W) 

label = Label(root) 
label.pack() 
mainloop() 

请帮助我就同一。

感谢&问候,
Vimo

回答

0

您需要保存部件引用和使用pack_forget()在需要时将其隐藏。

如果选择了option1,则隐藏由option2显示的小部件。同样,如果选择option2,则隐藏小部件option1

您可以将小部件引用保存在列表中或使用变量名称。

这是一个基本的例子:

from Tkinter import * 

root = Tk() 
v = IntVar() 

group1 = [] 
group2 = [] 

group1.append(Entry(root)) 
group1[0].insert(0, "Entry1") 

group1.append(Button(root, text='Button1')) 

group2.append(Entry(root)) 
group2[0].insert(0, "Entry2") 
group2.append(Button(root, text='Button2')) 

def show1(): 

    for w in group2: 
     w.pack_forget() 

    for w in group1: 
     w.pack() 

def show2(): 
    for w in group1: 
     w.pack_forget() 

    for w in group2: 
     w.pack() 

Radiobutton(root, 
      text="Single Component", 
      padx= 20, 
      variable=v, 
      value=1, 
      command=show1).pack(anchor=W) 
Radiobutton(root, 
      text="Complete Component", 
      padx = 20, 
      variable=v, 
      value=2, 
      command=show2).pack(anchor=W) 

mainloop() 
+0

感谢@Rawly为您输入..会给一个尝试@我的结束。如果您可以发布一个基本示例来保存小部件引用并隐藏它们,那将是非常好的。感谢您的及时帮助。 – Vimo

+0

@vimo我是空地帮你。检查这个例子。 – Zety

+0

@Vimo随时接受这个答案。 – Zety

相关问题