python,tkinter-仅当选择单选按钮时启用/禁用按钮

发布于 2025-02-04 15:16:07 字数 1186 浏览 3 评论 0原文

因此,这是我的代码,

root = Tk()

# 1st frame
frame_1 = LabelFrame(root)
frame_1.pack()

#var
var = IntVar()
var.set(0)
test = ['test1', 'test2', 'test3', 'test4']

# radio button
radio_1 = Radiobutton(frame_1, text = test[0], value = 1, variable = var)
radio_1.pack()
radio_2 = Radiobutton(frame_1, text = test[1], value = 2, variable = var)
radio_2.pack()
radio_3 = Radiobutton(frame_1, text = test[2], value = 3, variable = var)
radio_3.pack()

# 2nd frame
frame_2 = LabelFrame(root)
frame_2.pack()

# buttons
button_1 = Button(frame_2, text =  test[0], state = DISABLED)
button_1.pack()
button_2 = Button(frame_2, text =  test[1], state = DISABLED)
button_2.pack()
button_3 = Button(frame_2, text =  test[2], state = DISABLED)
button_3.pack()
button_4 = Button(frame_2, text =  test[3], state = DISABLED)
button_4.pack()

root.mainloop()

我要做的就是在选择无线电按钮时启用按钮。 这是我尝试的。

def changeState():
    if var.get() != 0:
       button_1['state'] = NORMAL
       button_2['state'] = NORMAL
       button_3['state'] = NORMAL
       button_4['state'] = NORMAL

changeState()

我相信这仅是最初设置的,并且当我选择一个广播按钮或更改它时,它不会更新。我认为我可以在按钮内使用命令,但不明白该如何处理。

So here's my code

root = Tk()

# 1st frame
frame_1 = LabelFrame(root)
frame_1.pack()

#var
var = IntVar()
var.set(0)
test = ['test1', 'test2', 'test3', 'test4']

# radio button
radio_1 = Radiobutton(frame_1, text = test[0], value = 1, variable = var)
radio_1.pack()
radio_2 = Radiobutton(frame_1, text = test[1], value = 2, variable = var)
radio_2.pack()
radio_3 = Radiobutton(frame_1, text = test[2], value = 3, variable = var)
radio_3.pack()

# 2nd frame
frame_2 = LabelFrame(root)
frame_2.pack()

# buttons
button_1 = Button(frame_2, text =  test[0], state = DISABLED)
button_1.pack()
button_2 = Button(frame_2, text =  test[1], state = DISABLED)
button_2.pack()
button_3 = Button(frame_2, text =  test[2], state = DISABLED)
button_3.pack()
button_4 = Button(frame_2, text =  test[3], state = DISABLED)
button_4.pack()

root.mainloop()

What I'm trying to do is have the buttons enabled when the radio buttons are selected.
Here's what I tried.

def changeState():
    if var.get() != 0:
       button_1['state'] = NORMAL
       button_2['state'] = NORMAL
       button_3['state'] = NORMAL
       button_4['state'] = NORMAL

changeState()

I believe this only sets it initially, and when I select a radio button or change it, it doesn't update. I think I can use command inside the buttons but don't understand how to go about it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只涨不跌 2025-02-11 15:16:07

我添加了四个函数。

尝试以下操作:

from tkinter import *

root = Tk()

# 1st frame
frame_1 = LabelFrame(root)
frame_1.pack()

#var
var = IntVar()
var.set(0)
test = ['test1', 'test2', 'test3', 'test4']

def changeState1():
    if var.get() !=0:
       button_1['state'] = NORMAL
       button_2['state'] = DISABLED
       button_3['state'] = DISABLED
       button_4['state'] = DISABLED

def changeState2():
    if var.get() !=0:
       button_1['state'] = DISABLED
       button_2['state'] = NORMAL
       button_3['state'] = DISABLED
       button_4['state'] = DISABLED       


def changeState3():
    if var.get() !=0:
       button_1['state'] = DISABLED
       button_2['state'] = DISABLED
       button_3['state'] = NORMAL
       button_4['state'] = DISABLED

def changeState4():
    if var.get() !=0:
       button_1['state'] = DISABLED
       button_2['state'] = DISABLED
       button_3['state'] = DISABLED
       button_4['state'] = NORMAL      
       
# radio button
radio_1 = Radiobutton(frame_1, text = test[0], value = 1,command=changeState1, variable = var)
radio_1.pack()
radio_2 = Radiobutton(frame_1, text = test[1], value = 2, command=changeState2, variable = var)
radio_2.pack()
radio_3 = Radiobutton(frame_1, text = test[2], value = 3,command=changeState3, variable = var)
radio_3.pack()
radio_4= Radiobutton(frame_1, text = test[2], value = 3,command=changeState4, variable = var)
radio_4.pack()

# 2nd frame
frame_2 = LabelFrame(root)
frame_2.pack()

# buttons
button_1 = Button(frame_2, text =  test[0],  state = DISABLED)
button_1.pack()
button_2 = Button(frame_2, text =  test[1], state = DISABLED)
button_2.pack()
button_3 = Button(frame_2, text =  test[2], state = DISABLED)
button_3.pack()
button_4 = Button(frame_2, text =  test[3], state = DISABLED)
button_4.pack()
  
root.mainloop()
changeState()

I added four function., Then in Radiobutton, I added command=changeState for each Radiobuuton.

Try this:

from tkinter import *

root = Tk()

# 1st frame
frame_1 = LabelFrame(root)
frame_1.pack()

#var
var = IntVar()
var.set(0)
test = ['test1', 'test2', 'test3', 'test4']

def changeState1():
    if var.get() !=0:
       button_1['state'] = NORMAL
       button_2['state'] = DISABLED
       button_3['state'] = DISABLED
       button_4['state'] = DISABLED

def changeState2():
    if var.get() !=0:
       button_1['state'] = DISABLED
       button_2['state'] = NORMAL
       button_3['state'] = DISABLED
       button_4['state'] = DISABLED       


def changeState3():
    if var.get() !=0:
       button_1['state'] = DISABLED
       button_2['state'] = DISABLED
       button_3['state'] = NORMAL
       button_4['state'] = DISABLED

def changeState4():
    if var.get() !=0:
       button_1['state'] = DISABLED
       button_2['state'] = DISABLED
       button_3['state'] = DISABLED
       button_4['state'] = NORMAL      
       
# radio button
radio_1 = Radiobutton(frame_1, text = test[0], value = 1,command=changeState1, variable = var)
radio_1.pack()
radio_2 = Radiobutton(frame_1, text = test[1], value = 2, command=changeState2, variable = var)
radio_2.pack()
radio_3 = Radiobutton(frame_1, text = test[2], value = 3,command=changeState3, variable = var)
radio_3.pack()
radio_4= Radiobutton(frame_1, text = test[2], value = 3,command=changeState4, variable = var)
radio_4.pack()

# 2nd frame
frame_2 = LabelFrame(root)
frame_2.pack()

# buttons
button_1 = Button(frame_2, text =  test[0],  state = DISABLED)
button_1.pack()
button_2 = Button(frame_2, text =  test[1], state = DISABLED)
button_2.pack()
button_3 = Button(frame_2, text =  test[2], state = DISABLED)
button_3.pack()
button_4 = Button(frame_2, text =  test[3], state = DISABLED)
button_4.pack()
  
root.mainloop()
changeState()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文