Python 想知道为什么我的GUI检查按钮功能不工作?

Python 想知道为什么我的GUI检查按钮功能不工作?,python,tkinter,Python,Tkinter,以上是我的checkbutton GUI程序代码,我希望得到输出: 但在我运行程序后,输出是意外的: 如您所见,我的意外输出显示为空白,没有显示任何内容。我想知道为什么会这样,我的代码有什么问题吗?如果您能帮我解决这个问题,我将不胜感激。问题是您没有打包self.cb1或cb2或cb3的父项。您应该在\uuu init\uu方法中执行self.top.pack() import tkinter import tkinter.messagebox class checkbutton:

以上是我的checkbutton GUI程序代码,我希望得到输出:

但在我运行程序后,输出是意外的:


如您所见,我的意外输出显示为空白,没有显示任何内容。我想知道为什么会这样,我的代码有什么问题吗?如果您能帮我解决这个问题,我将不胜感激。

问题是您没有打包
self.cb1
cb2
cb3
的父项。您应该在
\uuu init\uu
方法中执行
self.top.pack()

import tkinter
import tkinter.messagebox
class checkbutton:
    def __init__(self):
        self.main = tkinter.Tk()
        self.top = tkinter.Frame(self.main)
        self.bot = tkinter.Frame(self.main)

        self.cb1v = tkinter.IntVar()
        self.cb2v = tkinter.IntVar()
        self.cb3v = tkinter.IntVar()

        self.cb1v.set(0)
        self.cb2v.set(0)
        self.cb3v.set(0)

        self.cb1 = tkinter.Checkbutton(self.top, text = 'Option 1', variable = self.cb1v)
        self.cb2 = tkinter.Checkbutton(self.top, text = 'Option 2', variable = self.cb2v)
        self.cb3 = tkinter.Checkbutton(self.top, text = 'Option 3', variable = self.cb3v)
        
        self.cb1.pack()
        self.cb2.pack()
        self.cb3.pack()

        self.calbutton = tkinter.Button(self.bot, text = 'ok', command = self.show)
        self.quit = tkinter.Button(self.bot, text = 'quit',command = self.main.destroy)

        self.calbutton.pack(side='left')
        self.quit.pack(side='left')
        tkinter.mainloop()

    def show(self):
        self.messge = 'you click: '
        if self.cb1v.get() == 1:
            self.messge = self.messge + '1'
        if self.cb2v.get() == 1:
            self.messge = self.messge + '2'
        if self.cb3v.get() == 1:
            self.messge = self.messge + '3'

        tkinter.messagebox.showinfo('seletion',self.messge)

gui = checkbutton()

谢谢,我只是直接从教科书中复制代码,但没有top-pack或bot-pack()属性。另外,我们在创建框架时总是打包吗?@MINO如果您希望它显示,您应该
.pack
.grid
它。很酷,这就解释了,再次感谢
def __init__(self):
    # code above
    self.top.pack()
    self.cb1 = tkinter.Checkbutton(self.top, text = 'Option 1', variable = self.cb1v)
    self.cb2 = tkinter.Checkbutton(self.top, text = 'Option 2', variable = self.cb2v)
    self.cb3 = tkinter.Checkbutton(self.top, text = 'Option 3', variable = self.cb3v)
    # code after