首页 > 解决方案 > Tkinter 按钮显示但不起作用(初学者)

问题描述

我可以通过使用 ,self 更改按钮命令来显示 GUI,但按钮仍然无法工作。有什么建议吗?主要问题是 def btnclick() 和 btn1 command=BtnClick() 其余按钮也不起作用,但可以打开并显示。我以为这是一个缩进错误,但我尝试了一些不同之处而没有看到直接的变化。我还尝试将 def 类移动到其他代码行的上方和下方

class MainWindow(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.master.minsize(350,150)
        self.grid(sticky=E+W+S+N)

        self.save_dir = None #learn more about this: Try being more spasatious , ecfic
        self.filename_open = None #learn more about this

        top = self.winfo_toplevel()
        top.rowconfigure(0, weight=1)
        top.columnconfigure(0, weight=1)

        rd1 = random.randint(1, 20)
        rd2 = random.randint(1, 20)
        aiR1 = 20 - rd1
        aiR2 = 20 - rd2
        totalDif1 = 20 - rd1 - rd2
        totalDif2 = 20 - rd1 + rd2

        #---------Labels&Names---------#
        myLabel = Label(self, text = "tt")
        myLabel.grid(row=3, column=0, pady=2, padx=2, sticky=E+W+N+S)
        lbl1 = Label(self, text="My Roll", bg="#FFE19E")
        lbl1.grid(row=3, column=1, pady=2, padx=2, sticky=E+W+N+S)
        lbl2 = Label(self, text = "Ai Roll", bg="#FFE19E")
        lbl2.grid(row=3, column=2, pady=2, padx=2, sticky=E+W+N+S)
        lbl3 = Label(self, text = "Second Roll", bg="#FFE19E")
        lbl3.grid(row=5, column=1, pady=2, padx=2, sticky=E+W+N+S)
        lbl4 = Label(self, text = "Ai ReRoll", bg="#FFE19E")
        lbl4.grid(row=5, column=2, pady=2, padx=2, sticky=E+W+N+S)

        roll1 = Label(self, text=rd1)
        roll1.grid(row=4, column=1, pady=2, padx=2, sticky=E+W+N+S)
        roll2 = Label(self, text=aiR1)
        roll2.grid(row=4, column=2, pady=2, padx=2, sticky=E+W+N+S)
        roll3 = Label(self, text=rd2)
        roll3.grid(row=6, column=1, pady=2, padx=2, sticky=E+W+N+S)
        roll4 = Label(self, text=aiR2)
        roll4.grid(row=6, column=2, pady=2, padx=2, sticky=E+W+N+S)

        #---------Buttons---------#
        btn1 = Button(self, text="Roll", command=BtnClick(), activeforeground="red", relief="raised")
        btn1.grid(row=0, column=0, pady=2, padx=2, sticky=E+W+N+S)

        btn2 = Button(self, text="grey", command=BtnReset(),relief="raised")
        btn2.grid(row=1, column=0, pady=2, padx=2, sticky=E+W+N+S)

    def BtnClick():
        myLabel = Label(self, text = " ")
    def BtnReset():
        myLabel = Label(self, text = " ")

if __name__ =="__main__":
    d = MainWindow()
    d.mainloop()

标签: pythontkinterbuttonatom-editorself

解决方案


推荐阅读