首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建一个GUI以从不同的两个复选框中添加两个数字?

如何创建一个GUI以从不同的两个复选框中添加两个数字?
EN

Stack Overflow用户
提问于 2014-10-30 18:45:33
回答 1查看 6.3K关注 0票数 1
代码语言:javascript
复制
from tkinter import *
from ProjectHeader import *

def sel1():
    return 1

def sel2():
    return 2

def sel3():
    return 3

def sel4():
    return 4

def sel():

      selection = "THe answer is: " + str(sel2() + sel3())
      label.config(text = selection)

top = Tk()
var = IntVar()

CheckVar1 = sel1()
CheckVar2 = sel2()
CheckVar3 = sel3()
CheckVar4 = sel4()

C1 = Checkbutton(top, text = "Option1", variable = CheckVar1)
C2 = Checkbutton(top, text = "Option2", variable = CheckVar2)
C3 = Checkbutton(top, text = "Option3", variable = CheckVar3)
C4 = Checkbutton(top, text = "Option4", variable = CheckVar4)

B = Button(top, text ="ADD", command=sel)

B.pack()

C1.pack()
C2.pack()
C3.pack()
C4.pack()

label = Label(top)
label.pack()


top.mainloop()

正如title所说,如何创建一个GUI来从不同的两个复选框中添加两个数字?

例如,当我同时检查选项2和选项3时,程序将获得sel2()和sel3()中的值并进行加法

我试着用几种方法来做这件事,但是我不知道如何使复选框成为true/被选中,结果代码显示了答案,即使没有选中这些复选框。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-30 19:06:08

以下是您程序的简化版本,如果我理解正确的话,应该回答您的问题:

代码语言:javascript
复制
from Tkinter import *

gui = Tk()

#create variables to store check state
checked1 = IntVar()
checked2 = IntVar()
#create values for the two boxes
cb1 = 5
cb2 = 10

#create a callback for our button
def callback():
    print(checked1.get()*cb1+checked2.get()*cb2)

c1 = Checkbutton(gui, text='b1', variable=checked1)
c2 = Checkbutton(gui, text='b2', variable=checked2)
b1 = Button(gui, text="ADD", command=callback)

c1.pack()
c2.pack()
b1.pack()

gui.mainloop()

在您的程序中,您正在达到一个复杂的程度,这将有助于将您的gui重构为一个类。如果您想要了解如何这样做的例子,请阅读Tkinter文档。下面是一个使用GUI作为自定义类的示例:

代码语言:javascript
复制
from Tkinter import *

class Gui(object):
    def __init__(self, parent):
        self.top = parent

        self.checked1 = IntVar()
        self.checked2 = IntVar()

        self.c1_value = 1
        self.c2_value = 2

        self.c1 = Checkbutton(self.top, text='b1', variable=self.checked1)
        self.c2 = Checkbutton(self.top, text='b2', variable=self.checked2)
        self.b1 = Button(self.top, text="ADD", command=self.callback)
        self.l1 = Label(self.top)

        self.c1.pack()
        self.c2.pack()
        self.b1.pack()
        self.l1.pack()

    def callback(self):
        value = self.c1_value*self.checked1.get() + self.c2_value*self.checked2.get()
        self.l1.config(text=str(value))

root = Tk()

my_window = Gui(root)

root.mainloop()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26660986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档