наследование кнопки от tkinter
подскажите как правильно организовать наследование кнопки от tkinter.Button (с добавлением иконки(улучшение стандартного tkinter.Button добавлением свойств))
пока что остановился на этом. В чем мои ошибки? как правильно организовать работу pack()?
from tkinter import *
root = Tk()
class myButton(Button):
def __init__(self, text, width, height):
self._text = text
self._width = width
self._height = height
def text(self, _text):
text = _text
def width(self, _width):
width = _width
def height(self, _height):
height = _height
b2 = myButton(text="Изменить", width=15, height=3)
b2.pack()
root.mainloop()
свойство print
я думал добавить еще какое-нибудь свойство к примеру print, но не получилось, почему?
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from tkinter import *
root = Tk()
class myButton(Button):
def __init__(self, text, width, height, print): #Испр.
super().__init__(text=text, width=width, height=height)
self._text = text
self._width = width
self._height = height
self._print = print #Испр.
def text(self, _text):
text = _text
def width(self, _width):
width = _width
def height(self, _height):
height = _height
def print(self, _print): #Испр.
print(_print) #Испр.
b2 = myButton(text="123", width=15, height=3, print = "111") #Испр.
b2.pack()
root.mainloop()
Ответы (2 шт):
Ну вы же переопределили метод __init__ родительского класса, а в нём выполнялись важные действия. Соответственно, вы должны либо воспроизвести их в вашем коде, либо добавить в него вызов __init__ из родительского класса:
from tkinter import *
root = Tk()
class myButton(Button):
def __init__(self, text, width, height):
super().__init__(text=text, width=width, height=height) # Вот эта строка
self._text = text
self._width = width
self._height = height
def text(self, _text):
text = _text
def width(self, _width):
width = _width
def height(self, _height):
height = _height
b2 = myButton(text="Изменить", width=15, height=3)
b2.pack()
root.mainloop()
Получилось сделать как-то так... (пытаюсь научиться переопределять классы)
from tkinter import *
root = Tk()
class myButton(Button):
def __init__(self, text, width, height, image):
self._image = image
self.Photo = PhotoImage(file=self._image)
super().__init__(text=text, width=width, height=height, image=self.Photo)
self._text = text
self._width = width
self._height = height
#b2 = myButton(text="123", width=15, height=3, image="1.png") # Полно
b2 = myButton("123", 15, 3, "1.png") # Коротко
b2.pack()
root.mainloop()
и еще вопрос, если вызов не полный:
Button(text="123", width=15, height=3, image="1.png")
а короткий:
Button("123", 15, 3, "1.png")
как узнать названия параметров: text, width, height и пр... ? если вбить в гугле, https://www.tutorialspoint.com/python/tk_button.htm и прочитать options(как по данной ссылке) они будут соответствовать действительности?