Найти - Пользователи
Полная версия: Вызов функции из другого класса Tkinter
Начало » GUI » Вызов функции из другого класса Tkinter
1
ZIL130
Есть два класса. В одном кнопка во втором – меню главного окна.
Как их привязать к одной команде?
Код:
  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’
xam1816
как вариант
  
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()
ZIL130
Я вот думал в этом направлении.
Если сработает, то будет здорово.
Спасибо.

Попробовал – работает.
Отлично.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB