У меня есть 2 модуля TkInter. Один из них - это панель инструментов (tBar.py), а вторая - общий модуль (tBarCall.py).ссылки на виджеты из импортированного модуля
1) модуль панели инструментов (tBar.py): это создаст рамку на панели инструментов и поместит на нее кнопки (например, сохранить, добавить, удалить и т. Д.).
2) главный модуль клиента (tBarCall.py): он будет импортировать и запускать модуль панели инструментов. Затем на более позднем этапе он должен включать/отключать некоторые из кнопок, размещенных на рамке панели инструментов. Пожалуйста, см. Ошибки, которые я покажу, когда я пытаюсь включить/отключить кнопки.
Я могу импортировать модуль панели инструментов из главного модуля клиента, но я не могу включать/отключать (ссылаться) на кнопки на панели инструментов.
Не могли бы вы помочь мне, как я могу это сделать?
Вот код:
=== tBar.py ===
import tkinter as tk
def attach_toolbar(rootWindow, action, save_record, first_record):
if action == "I":
fToolbar = tk.Frame(rootWindow, padx = 1, pady = 1, bg="RED")
fToolbar.grid(row=0, column = 0, sticky='w') #pack(anchor="nw",expand=1) #
bSave = tk.Button(fToolbar, text="save", command=save_record) #width=6, height=2, text = "Save\nrecord", font=("Calibri", 8),
bFirst = tk.Button(fToolbar, text="first", command=first_record) #width=6, height=2, text = "First\nrecord", font=("Calibri", 8),
bSave.pack(side="left")
bFirst.pack(side="left")
else:
bFirst.configure(state="disabled")
=== tBarCall.py ===
import tkinter as tk
import tBar
def save_record():
print ("save_record")
def first_record():
print ("first_record")
class startModule:
def __init__(self, rootWindow):
print("__init__")
self.rootWindow = rootWindow
self.rootClient = tk.Toplevel(self.rootWindow)
self.rootClient.geometry('1300x650+1+1')
tBar.attach_toolbar(self.rootClient, "I", save_record, first_record)
#tBar.attach_toolbar(self.rootClient, "D", save_record, first_record) #UnboundLocalError: local variable 'bFirst' referenced before assignment
#bFirst.configure(state="disabled") #NameError: name 'bFirst' is not defined
#self.rootClient.bFirst.configure(state="disabled") #AttributeError: 'Toplevel' object has no attribute 'bFirst'
#self.rootClient.fToolbar.bFirst.configure(state="disabled") #AttributeError: 'Toplevel' object has no attribute 'fToolbar'
if __name__ == "__main__":
root = tk.Tk()
startModule(root)
root.mainloop()