简体   繁体   中英

GUI Programming

When I run my GUI program, I get an error that says in automotive = Automotive(), line 63, has an attribute error that says Automotive has no attribute 'show_choice'. But in my program below, it is clearly stated. Why is it saying this and how can I fix this problem?

Here is the GUI program I have so far (where I'm having trouble):

def show_choice(self):
    self.message = 'You selected:\n'

    if self.cb_var1.get() == 1:
        self.message = self.message + '1\n'
    if self.cb_var2.get() == 1:
        self.message = self.message + '2\n'
    if self.cb_var3.get() == 1:
        self.message = self.message + '3\n'
    if self.cb_var4.get() == 1:
        self.message = self.message + '4\n'
    if self.cb_var5.get() == 1:
        self.message = self.message + '5\n'
    if self.cb_var6.get() == 1:
        self.message = self.message + '6\n'
    if self.cb_var7.get() == 1:
        self.message = self.message + '7\n'

#Display the message in the info box.

        tkinter.messagebox.showinfo('Selection', self.message)

#Create an instance for My Gui class.

automotive = Automotive()

Your method is most probably over indented ie:

class Automotive():
    def __init__(self):
        ....
        def show_choice(self):
            self.message = 'You selected:\n'

            if self.cb_var1.get() == 1:
                self.message = self.message + '1\n'
            if self.cb_var2.get() == 1:
                self.message = self.message + '2\n'
            if self.cb_var3.get() == 1:
                self.message = self.message + '3\n'
            if self.cb_var4.get() == 1:
                self.message = self.message + '4\n'
            if self.cb_var5.get() == 1:
                self.message = self.message + '5\n'
            if self.cb_var6.get() == 1:
                self.message = self.message + '6\n'
            if self.cb_var7.get() == 1:
                self.message = self.message + '7\n'

Or:

class Automotive():
    def __init__(self):
        ....
def show_choice(self):
    self.message = 'You selected:\n'

    if self.cb_var1.get() == 1:
        self.message = self.message + '1\n'
    if self.cb_var2.get() == 1:
        self.message = self.message + '2\n'
    if self.cb_var3.get() == 1:
        self.message = self.message + '3\n'
    if self.cb_var4.get() == 1:
        self.message = self.message + '4\n'
    if self.cb_var5.get() == 1:
        self.message = self.message + '5\n'
    if self.cb_var6.get() == 1:
        self.message = self.message + '6\n'
    if self.cb_var7.get() == 1:
        self.message = self.message + '7\n'

The def should be at the same indentation as your init def:

class Automotive():
    def __init__(self):
        ....
    def show_choice(self):
        self.message = 'You selected:\n'

        if self.cb_var1.get() == 1:
            self.message = self.message + '1\n'
        if self.cb_var2.get() == 1:
            self.message = self.message + '2\n'
        if self.cb_var3.get() == 1:
            self.message = self.message + '3\n'
        if self.cb_var4.get() == 1:
            self.message = self.message + '4\n'
        if self.cb_var5.get() == 1:
            self.message = self.message + '5\n'
        if self.cb_var6.get() == 1:
            self.message = self.message + '6\n'
        if self.cb_var7.get() == 1:
            self.message = self.message + '7\n'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM