Форум сайта python.su
Есть два класса. В одном кнопка во втором – меню главного окна.
Как их привязать к одной команде?
Код:
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()
Офлайн
как вариант
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 (Март 8, 2024 21:21:39)
Офлайн