Grigorie Grigorie - 2 months ago 10
Python Question

Python, code works, but openning via bat file get error

Following is a simple working GUI programm. However, when I try to open it from a

bat
file, it gives an error.

Bat file (2 lines):

ch10.2.py
pause


The error I receive is:

[error message in text format to be included here]

My code:

# Lazy Buttons 2
# Demonstrates using a class with Tkinter

from tkinter import *

class Application(Frame):
""" A GUI application with three buttons. """
def __init__(self, master):
""" Initialize the Frame. """
super(Application, self).__init__(master)
self.grid()
self.create_widgets()

def create_widgets(self):
""" Create three buttons that do nothing. """
# create first button
self.bttn1 = Button(self, text = "I do nothing!")
self.bttn1.grid()

# create second button
self.bttn2 = Button(self)
self.bttn2.grid()
self.bttn2.configure(text = "Me too!")

# create third button
self.bttn3 = Button(self)
self.bttn3.grid()
self.bttn3["text"] = "Same here!"

# main
root = Tk()
root.title("Lazy Buttons 2")
root.geometry("200x85")
app = Application(root)
root.mainloop()

Answer

It's giving error on super(Application, self).__init__(master).
If you replace with Frame.__init__(self, master) , its working. See below

# Lazy Buttons 2
# Demonstrates using a class with Tkinter

from tkinter import *

class Application(Frame):
    """ A GUI application with three buttons. """

    def __init__(self, master):
        """ Initialize the Frame. """       
        Frame.__init__(self, master)
        #super(Application, self).__init__(master) 
        self.grid()
        self.createWidgets()




    def createWidgets(self):
        """ Create three buttons that do nothing. """
        # create first button
        self.bttn1 = Button(self, text = "I do nothing!")  
        self.bttn1.grid()

        # create second button
        self.bttn2 = Button(self)
        self.bttn2.grid()   
        self.bttn2.configure(text = "Me too!")

        # create third button
        self.bttn3 = Button(self)
        self.bttn3.grid()
        self.bttn3["text"] = "Same here!"


# main
root = Tk()
root.title("Lazy Buttons 2")
root.geometry("200x85")
app = Application(root)
root.mainloop()

OUTPUT
enter image description here