Результат нажатия кнопки не отображается в предполагаемом кадреPython

Программы на Python
Ответить
Anonymous
 Результат нажатия кнопки не отображается в предполагаемом кадре

Сообщение Anonymous »

Проект содержит 3 файла
main.py

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

from customtkinter import *
import tkinter as tk
from tkinter import ttk
from include.frame_select import FrameSelect
from include.frame_main import FrameMain
window = CTk()
window.geometry("600x800+100+100")
window.resizable(1,1)
frame_select = FrameSelect(window)
frame_select.grid(row = 0, column = 0, sticky = N + W)
frame_main = FrameMain(window)
frame_main.grid(row = 0, column = 1, sticky = N + W)
window.mainloop()
frame_select.py (в каталоге)

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

import tkinter as tk
from tkinter import ttk
from customtkinter import *
from include.frame_main import FrameMain

class FrameSelect(CTkFrame):
def __init__(self, master):
super().__init__(master)
self.configure(width=200)
id_label = CTkLabel(self, text = "Source file(s)", font = ("Arial",18,"bold"))
id_label.grid(row = 0, column = 0)

button_select = CTkButton(self, text="Select", command=self.select_file).grid(row = 1, column = 0)
button_check = CTkButton(self, text="Check", command=lambda: FrameMain.write_info_on_screen(self, file_path)).grid(row = 2, column = 0)

def select_file(self):
list_of_files = []
global file_path
file_path = filedialog.askopenfilenames(
title="Select a File",
initialdir=".",
filetypes=[("All files", "*.*")])
if file_path:
for i, file in enumerate(file_path):
list_of_files.append(file)
print(list_of_files)
frame_main.py (в каталоге include)

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

import tkinter as tk
from tkinter import ttk
from customtkinter import *

class FrameMain(CTkFrame):
def __init__(self, master):
super().__init__(master)
self.configure(width=300)

def count_number_of_files(self, list_of_files):
for i,file_name in enumerate(list_of_files):
label = tk.Label(self, text=file_name).grid(row=1,column=i, padx=10, pady=10)

def write_info_on_screen(self, file_path):
FrameMain.count_number_of_files(self, file_path)
После нажатия кнопки button_check результат появится в FrameSelect, где находятся виджеты. Вместо этого я хочу, чтобы результаты появлялись в FrameMain.
Я знаю, что это происходит, потому что я использую self в качестве первого аргумента при вызове метода.
Пробовал self, super(), master, родительский, FrameMain(CTkFrame)
Экземпляр FrameMain находится в main.py, но как мне получить к нему доступ?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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