Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Вызов функции из другого класса Tkinter [RSS Feed]

#1 Март 8, 2024 11:52:28

ZIL130
Зарегистрирован: 2022-10-29
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Вызов функции из другого класса Tkinter

Есть два класса. В одном кнопка во втором – меню главного окна.
Как их привязать к одной команде?
Код:

  from tkinter import *
from PIL import Image, ImageTk
class ToolBar(Frame):
    def __init__(self, parent, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)
        
        self.configure(height = 100)
        
        self.image1 = Image.open( "./images/save_file.png")
        self.resize_image1 = self.image1.resize((32, 32))
        self.img1 = ImageTk.PhotoImage(self.resize_image1)
        
        btn = Button(self, image = self.img1, command = Example.click)
        btn.pack()
        
    # def f_click(self):
        
        # example = Example()
        # example.click()
class Example(Tk):
    def __init__(self, parent=None, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)
        
        self.minsize(width = 500, height = 500)
        menubar = Menu(self, background='#FFD39B', foreground='black', activebackground='#F0FFFF', activeforeground='black')
        push_menu = Menu(menubar, tearoff = 0)
        menubar.add_cascade(label = 'Текст', menu = push_menu)
        push_menu.add_command(label = 'Применить', command = self.click)
        self.config(menu=menubar)
        
        self.text = Text(self)
        
        tlbr = ToolBar(self)
        tlbr.pack(side = 'top', fill = 'x')
        self.text.pack(fill = 'both', expand = True)
        
    def click(self):
        self.text.configure(font = "Helvetica 16 bold")
if __name__ == '__main__':
    
    example = Example()
    example.mainloop()
Ошибка при запуске кода: TypeError: Example.click() missing 1 required positional argument: ‘self’

Офлайн

#2 Март 8, 2024 20:53:39

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1314
Репутация: +  113  -
Профиль   Отправить e-mail  

Вызов функции из другого класса Tkinter

как вариант

  
from tkinter import *
from PIL import Image, ImageTk
class ToolBar(Frame):
    def __init__(self, parent, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)
        self.configure(height=100)
        # self.image1 = Image.open("./images/save_file.png")
        # self.resize_image1 = self.image1.resize((32, 32))
        # self.img1 = ImageTk.PhotoImage(self.resize_image1)
        self.btn = Button(self)
        self.btn.pack()
    # def f_click(self):
    # example = Example()
    # example.click()
class Example(Tk):
    def __init__(self, parent=None, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)
        self.minsize(width=500, height=500)
        menubar = Menu(self, background='#FFD39B', foreground='black', activebackground='#F0FFFF',
                       activeforeground='black')
        push_menu = Menu(menubar, tearoff=0)
        menubar.add_cascade(label='Текст', menu=push_menu)
        push_menu.add_command(label='Применить', command=self.click)
        self.config(menu=menubar)
        self.text = Text(self)
        tlbr = ToolBar(self)
        tlbr.btn.configure(command=self.click)
        tlbr.pack(side='top', fill='x')
        self.text.pack(fill='both', expand=True)
    def click(self):
        self.text.configure(font="Helvetica 16 bold")
if __name__ == '__main__':
    example = Example()
    example.mainloop()

Офлайн

#3 Март 8, 2024 21:18:54

ZIL130
Зарегистрирован: 2022-10-29
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Вызов функции из другого класса Tkinter

Я вот думал в этом направлении.
Если сработает, то будет здорово.
Спасибо.

Попробовал – работает.
Отлично.

Отредактировано ZIL130 (Март 8, 2024 21:21:39)

Офлайн

  • Начало
  • » GUI
  • » Вызов функции из другого класса Tkinter[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version