【问题标题】:How to select one tkinter button at a time如何一次选择一个 tkinter 按钮
【发布时间】:2017-11-22 11:15:33
【问题描述】:

我希望在可以打印条目中的内容之前选择我的 tkinter 按钮,但可以同时选择两个按钮。我希望我的小部件执行的所有行为都只能执行同时选择两个按钮,我希望一次提升一个按钮。

import tkinter as tk


def output():

    global choosed

    if choosed:
        now = new.get()
        print(now)
    else:
        print("select predict button to proceed")


def raised_button(button_object):

    global choosed
    choosed = True

    button_object.configure(relief=tk.SUNKEN, state=tk.DISABLED)


def stop():

    global choosed
    choosed = False

    lot1.configure(relief=tk.RAISED, state=tk.ACTIVE)
    lot2.configure(relief=tk.RAISED, state=tk.ACTIVE)



root = tk.Tk()
root.geometry("400x400")


new = tk.StringVar()
en = tk.Entry(root, textvariable=new).pack()

choosed = False


lot1 = tk.Button(root, text="GOOD")
lot1.configure(command=lambda button_object=lot1: 
raised_button(button_object))
lot1.pack(side="left")


lot2 = tk.Button(root, text="BAD")
lot2.configure(command=lambda button_object=lot2: 
raised_button(button_object))
lot2.pack()


tk.Button(root, text="print number", command=lambda :[output(),
stop()]).place(x=150, y=300)

root.mainloop()

如果选择GOOD @ 987654322姓氏应用于它,只有选择按钮BAD sunken效果应用于它Good sunken效果被禁用。

【问题讨论】:

  • 我只想选择一个按钮,但使用上面的代码我可以同时选择两个按钮
  • tkinter 凸起效果应该应用于一个按钮而不是两个按钮

标签: python button tkinter


【解决方案1】:

据我了解,只能按下一个按钮。如果您单击第二个按钮,那么第一个按钮(凹陷的)必须再次抬起。

您可以在raise_button() 中使用stop()。

def raised_button(button_object):
    global choosed
    choosed = True

    stop()

    button_object.configure(relief=tk.SUNKEN, state=tk.DISABLED)

或者您可以使用choosed 记住 suken 按钮并在您单击其他按钮时将其抬起。

def raised_button(button_object):
    global choosed

    if choosed: # previously clicked
        choosed.configure(relief=tk.RAISED, state=tk.ACTIVE)

    choosed = button_object
    button_object.configure(relief=tk.SUNKEN, state=tk.DISABLED)

def stop():
    global choosed

    choosed = None

    lot1.configure(relief=tk.RAISED, state=tk.ACTIVE)
    lot2.configure(relief=tk.RAISED, state=tk.ACTIVE)

#----

choosed = None # set at start

编辑:您还可以将Radiobuttons 与indicatoron=0 一起使用,它们看起来像普通按钮,但仍然只能选择一个Radiobutton。

import tkinter as tk

root = tk.Tk()

v = tk.IntVar()

tk.Radiobutton(root, text="One", variable=v, value=1, indicatoron=0).pack()
tk.Radiobutton(root, text="Two", variable=v, value=2, indicatoron=0).pack()

tk.Button(root, text='Reset', command=lambda:v.set(0)).pack()

root.mainloop() 

在 effbot.org 上查看更多信息:Radiobutton

【讨论】:

  • 只是在 raise_button 函数中调用 stop() 函数简单的魅力一直在苦苦挣扎,谢谢@furas
  • 拜托我也想成为像你们一样的 Python 大师,你能提供任何网站链接或任何资源我可以学习以提高我的技能。我愿意学习新事物。我从观看开始youtube 上的视频并希望改进。
  • 我使用计算机将近 30 年,所以我很久以前(在互联网创建之前)学习了第一语言,我不记得我是在何时何地学习 Python 的。据我所知,在 YouTube 上很受欢迎的是 sentdex。请参阅python.zeef.com 上的链接。
猜你喜欢
  • 1970-01-01
  • 2016-01-09
  • 2018-06-17
  • 1970-01-01
  • 2012-04-23
  • 2020-10-15
  • 2017-06-28
  • 2020-02-29
  • 1970-01-01
相关资源
最近更新 更多