Код: Выделить всё
import tkinter as tk
from tkinter import *
frameLH = 120
def main_window(): # ========================== Main Window ==============================
window = tk.Tk()
window.geometry("950x650")
window.minsize(750, 625)
window.configure(bg='#65A8E1')
FrameTop(window)
FrameBot(window)
FrameLft(window)
FrameRgt(window)
window.mainloop()
class FrameTop: # ============================ Top Frame =================================
def __init__(self, root):
self.root = root
self.frame_top = tk.Frame(root, height=100, bg="#70AD47", relief=tk.RAISED, borderwidth=5)
self.frame_top.pack(fill=tk.X, side=tk.TOP)
self.btnM = (tk.Button(self.frame_top, bg="#4472C4", fg="White", bd=2, font=("Calibre", 12, 'bold'), activebackground='#ED7D31', text="Menu", command=FrameLft.on_clickMB))
`# could not call function from other class FrameLft ====`
self.btnM.place(x=10, y=45)
class FrameBot: # ============================ Bottom Frame =================================
def __init__(self, root):
self.root = root
frame_bot = Frame(root, height=45, bg="#4472C4", relief=tk.RAISED, borderwidth=5) # blue
frame_bot.pack(fill=tk.X, side=tk.BOTTOM)
class FrameLft: # ============================ Left Frame =================================
def __init__(self, root):
self.root = root
self.frame_lft = tk.Frame(root, width=120, bg="#ED7D31", relief=tk.RAISED, borderwidth=5)
self.frame_lft.pack(fill=tk.Y, side=tk.LEFT)
def on_clickMB(self): # ========================= Minimize/Maximize Menu ====================
global frameLH
if frameLH == 120:
self.frame_lft.config(width=70)
frameLH = 70
elif frameLH == 70:
self.frame_lft.config(width=120)
frameLH = 120
class FrameRgt: # ============================ Right Frame =================================
def __init__(self, root):
self.root = root
frame_rgt = tk.Frame(self.root, width=130, bg="#FFC000", relief=tk.RAISED, borderwidth=5)
frame_rgt.pack(fill=tk.Y, side=tk.RIGHT)
if __name__ == "__main__":
main_window()
Я хочу вызвать эту функцию с помощью tk.Button, размещенного в классе "FrameTop".
При нажатии кнопки tk.Button отображается ошибка: TypeError: FrameLft.on_clickMB() отсутствует 1 обязательный позиционный аргумент: "self".
Кадры должны располагаться последовательно: FrameTop, FrameBot, FrameLft и FrameRgt.
Подробнее здесь: https://stackoverflow.com/questions/787 ... mb-missing