Не удалось вызвать функцию из другого класса; Ошибка: в FrameLft.on_clickMB() отсутствует 1 обязательный позиционный аргPython

Программы на Python
Anonymous
Не удалось вызвать функцию из другого класса; Ошибка: в FrameLft.on_clickMB() отсутствует 1 обязательный позиционный арг

Сообщение Anonymous »

Код: Выделить всё

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()

Я определил функцию «on_clickMB(self)» в классе «FrameLft».
Я хочу вызвать эту функцию с помощью tk.Button, размещенного в классе "FrameTop".
При нажатии кнопки tk.Button отображается ошибка: TypeError: FrameLft.on_clickMB() отсутствует 1 обязательный позиционный аргумент: "self".
Кадры должны располагаться последовательно: FrameTop, FrameBot, FrameLft и FrameRgt.

Подробнее здесь: https://stackoverflow.com/questions/787 ... mb-missing

Вернуться в «Python»