Ошибка при создании простой двухкнопочной игры на Python IDLE 3.7 - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу сделать основную игру, в которой есть две кнопки «влево» и «вправо», и у меня есть персонаж.Символ должен двигаться влево и вправо при нажатии соответствующих кнопок.Это код, который я использовал.Этот код не дает желаемого результата.Подскажите пожалуйста, как расположить две кнопки в одной области?Также не могли бы вы помочь сделать этот код более эффективным?

from tkinter import *

class Application(Frame):

    def __init__(a, master):
        super(Application, a).__init__(master)
        a.grid()
        a.b_c = 0
        a.b = Button(a)
        a.b['text'] = "START"
        a.b['command'] = a.u
        a.b.grid()


    def u(a):
        a.b['text'] = "Move Right"
        a.b_c += 1
        print("\n"*40+" "*a.b_c+"*")

root = Tk()
root.title("Bot World")

app = Application(root)


class Applicatio(Frame):

    def __init__(x, master):
        super(Applicatio, x).__init__(master)
        x.grid()
        x.b_c = 0
        x.b = Button(x)
        x.b['text'] = "START"
        x.b['command'] = x.u
        x.b.grid()


    def u(x):
        x.b['text'] = "Move Left"
        a.b_c -= 1
        print("\n"*40+" "*a.b_c+"*")

root = Tk()
root.title("Bot World")

app = Applicatio(root)

1 Ответ

0 голосов
/ 09 ноября 2018

Ваш код был немного сложен для подражания. Пожалуйста, работайте над своим стилем имен. Здесь помогут рекомендации по стилю PEP8, и другим будет легче читать ваш код.

Имейте в виду, что для Python 3 все, что вам нужно сделать с супер, это super().__init__().

99,9% времени вам нужен только один Tk() экземпляр.

Вместо того, чтобы пытаться создать 2 отдельных класса для своих кнопок, вы можете объединить их в один класс, и вам будет проще управлять атрибутом b_c class.

import tkinter as tk

class Application(tk.Frame):
    def __init__(self, master):
        super().__init__()
        self.b_c = 0
        self.btn1 = tk.Button(self, text="START", command=self.set_buttons)
        self.btn1.pack()

    def set_buttons(self):
        self.btn1.config(text="Move Right", command=self.move_right)
        self.btn2 = tk.Button(self, text="Move Left", command=self.move_left)
        self.btn2.pack()

    def move_right(self):
        self.b_c += 1
        print("\n" * 40 + " " * self.b_c + "*")

    def move_left(self):
        self.b_c -= 1
        print("\n" * 40 + " " * self.b_c + "*")


root = tk.Tk()
root.title("Bot World")
Application(root).pack()
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...