Я пытаюсь создать графический интерфейс с использованием tkinter в Python3, который будет иметь несколько кнопок, и я не хочу каждый раз набирать одни и те же атрибуты для всех, например:
tkinter.Button(topFrame, font=("Ariel", 16), width=10, height=10,
fg="#ffffff", bg="#000000", text="Cake")
Например,fg
, bg
color и size
будут одинаковыми на каждой кнопке.На каждой кнопке меняются только текст и место для их размещения.
Я довольно новичок в программировании и Python и пытаюсь повторно использовать код, когда хочу создать новыйкнопка.Я думаю, что мне не хватает некоторого понимания классов, которые я не получаю, когда читаю его.
Я хочу передать разный текст для каждой кнопки и другой фрейм, чтобы поместить его вдругое расположение в графическом интерфейсе и все остальное такое же.
Мой код на данный момент:
import tkinter
import tkinter.messagebox
window = tkinter.Tk()
#create default values for buttons
#frame and buttonText are the values passed to the class when making a new
#button
class myButtons:
def buttonLayout(self, frame, buttonText):
self.newButton=tkinter.Button(frame, font=("Ariel", 16),
width=10, height=10, fg=#ffffff,
bg=#000000, text=buttonText)
topFrame = tkinter.Frame(window)
topFrame.pack()
#create new button here and place in the frame called topFrame with the text
#"Cake" on it
buttonCake = myButtons.buttonLayout(topFrame, "Cake")
#position the new button in a certain cell using grid in topFrame
buttonCake.grid(row=1, column=0)
window.mainloop()
Ошибка, которую я получаю при попытке запустить:
TypeError: buttonLayout() missing 1 required positional argument: 'buttonText'
Я в замешательстве, потому что я передаю "Cake"
, и в сообщении об ошибке говорится, что его нет.
Спасибо, что указали init Я не знал, как использовать init для моей проблемы, но это и ответы, приведенные здесь, помогли.Спасибо.