Python3.6复选框,价格选项

时间:2017-10-26 04:38:57

标签: python python-3.x tkinter

我得到了一些基本程序的代码,我用ID3用Python3.6编写。我希望用户选择他们想要的选项,包括全部4个,1个或两者之间的任意组合,点击' Total'找到所有选定选项的总和/ a.k.a并将其显示在消息框中。使用CheckbuttontkinterMyGUI

我完全迷失在def do_this(self):部分以及if声明中。这是代码,我们将不胜感激。

我们的教学方式非常基础,我希望所有的答案都尽可能基本,这就是设计的意思。

from tkinter import *
import tkinter.messagebox
class MyGUI:
    def __init__(self):
        self.main_window=Tk()

        self.main_window.geometry('300x300+100+100')
        self.main_window.title("Price Options")
        self.frame1=Frame(self.main_window, width=280, height=240)
        self.frame1.place(x=10, y=10)
        self.choice1=IntVar()
        self.choice2=IntVar()
        self.choice3=IntVar()
        self.choice4=IntVar()

        #want this price $20
        self.cb1=Checkbutton(self.frame1, text='Option1', font=('Arial',16),\
                             variable= self.choice1)
        self.cb1.place(x=40, y=40)
        #want this price $30
        self.cb2=Checkbutton(self.frame1, text='Option2', font=('Arial',16),\
                             variable= self.choice2)
        self.cb2.place(x=40, y=75)
        #want this price $40
        self.cb3=Checkbutton(self.frame1, text='Option3', font=('Arial',16),\
                             variable= self.choice3)
        self.cb3.place(x=40, y=100)
        #want this price $50
        self.cb4=Checkbutton(self.frame1, text='Option4', font=('Arial',16),\
                             variable= self.choice4)
        self.cb4.place(x=40, y=135)

        self.button1=Button(self.frame1, text='Total', font=('Arial', 16),\
                            command=self.do_this)
        self.button1.place(x=40, y=170)
        mainloop()

    def do_this(self):
        if self.choice1.get():
            #What to put
        elif self.choice2.get()+self.choice1.get():
            #What to put
        elif self.choice3.get()+self.choice1.get()+self.choice2.get():
            #Etc..
        elif 
            self.choice4.get() + self.choice1.get()+ self.choice2.get()+ self.choice3.get():
        #Etc..
        tkinter.messagebox.showinfo('Total', )#<----- What to put 


my_gui=MyGUI()

我认为我错过了一些变量或命令或者其他东西,我所遇到的所有帮助都是我们在课堂上没有触及的更深刻和更高技能的概念,我只是想绕过这个。

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案可以让您从目的地到达目的地,在onvalue个实例上设置offvalueCheckbutton选项。也就是说,不是让self.choice1.get()返回一个布尔值,如果未选中则返回0,如果选中则返回它的价格(20)。然后你可以简单地对变量求和,而不是测试它们:

from tkinter import *
import tkinter.messagebox

FONT = ('Arial', 16)

class MyGUI:
    def __init__(self):
        main_window = Tk()

        main_window.geometry('300x300+100+100')
        main_window.title("Price Options")

        frame = Frame(main_window, width=280, height=240)
        frame.place(x=10, y=10)

        self.choice1 = IntVar()
        self.choice2 = IntVar()
        self.choice3 = IntVar()
        self.choice4 = IntVar()

        # want this price $20
        cb1 = Checkbutton(frame, text='Option1', variable=self.choice1, \
            onvalue=20, offvalue=0, font=FONT)
        cb1.place(x=40, y=50)

        # want this price $30
        cb2 = Checkbutton(frame, text='Option2', variable=self.choice2, \
            onvalue=30, offvalue=0, font=FONT)
        cb2.place(x=40, y=75)

        # want this price $40
        cb3 = Checkbutton(frame, text='Option3', variable=self.choice3, \
            onvalue=40, offvalue=0, font=FONT)
        cb3.place(x=40, y=100)

        # want this price $50
        cb4 = Checkbutton(frame, text='Option4', variable=self.choice4, \
            onvalue=50, offvalue=0, font=FONT)
        cb4.place(x=40, y=125)

        button = Button(frame, text='Total', command=self.do_this, font=FONT)
        button.place(x=40, y=170)

        mainloop()

    def do_this(self):
        total = self.choice1.get() + self.choice2.get() + \
            self.choice3.get() + self.choice4.get()
        tkinter.messagebox.showinfo('Total', str(total))

my_gui = MyGUI()

这可能不是您问题的最佳解决方案,但非常基本