Идея в том, что Label должна получать текст из основной программы, но даже если VS C говорит, что в коде нет проблем, когда я нажимаю 'run', он вылетает.
import sys
import tkinter as tk
import tkinter.ttk as ttk
class results:
def __init__(self, ):
global root, Class
root = tk.Tk()
root.geometry("819x503+471+148")
root.minsize(120, 1)
root.maxsize(3844, 1061)
root.resizable(1, 1)
root.title("Results")
root.configure(background="#d9d9d9")
root.configure(highlightbackground="#d9d9d9")
root.configure(highlightcolor="black")
_bgcolor = '#d9d9d9' # X11 color: 'gray85'
_fgcolor = '#000000' # X11 color: 'black'
_compcolor = '#d9d9d9' # X11 color: 'gray85'
_ana1color = '#d9d9d9' # X11 color: 'gray85'
_ana2color = '#ececec' # Closest X11 color: 'gray92'
font10 = "-family {Yu Mincho} -size 24 -slant italic"
font11 = "-family {Segoe UI} -size 13 -underline 1"
self.style = ttk.Style()
if sys.platform == "win32":
self.style.theme_use('winnative')
self.style.configure('.',background=_bgcolor)
self.style.configure('.',foreground=_fgcolor)
self.style.configure('.',font="TkDefaultFont")
self.style.map('.',background=
[('selected', _compcolor), ('active',_ana2color)])
self.TFrame1 = ttk.Frame(root)
self.TFrame1.place(relx=0.012, rely=0.02, relheight=0.96, relwidth=0.974)
self.TFrame1.configure(relief='groove')
self.TFrame1.configure(borderwidth="2")
self.TFrame1.configure(relief="groove")
self.TSubFrame1 = ttk.Frame(self.TFrame1)
self.TSubFrame1.place(relx=0.025, rely=0.248, relheight=0.59
, relwidth=0.296)
self.TSubFrame1.configure(relief='groove')
self.TSubFrame1.configure(borderwidth="2")
self.TSubFrame1.configure(relief="groove")
self.labelShowClass = ttk.Label(self.TSubFrame1)
self.labelShowClass.place(relx=0.042, rely=0.035, height=259, width=215)
self.labelShowClass.configure(background="#d9d9d9")
self.labelShowClass.configure(foreground="#000000")
self.labelShowClass.configure(font="TkDefaultFont")
self.labelShowClass.configure(relief="flat")
self.labelShowClass.configure(anchor='w')
self.labelShowClass.configure(justify='left')
self.labelShowClass.configure(text=Class) #Imma kms, why does it say it's not defined!?!?!
def recieveClasses(self, classes):
global Class
Class = classes
def start(self):
global root
root.mainloop()
def close(self):
global root
root.destroy()
Код main.py, вызывающий объект:
from interface.results import results
result = results()
result.recieveClasses("test")
result.start()
Сообщение об ошибке о том, что его не существует. Дело в том, что если я пытаюсь вызвать глобальный класс любым другим методом, кроме init , он без проблем вызывает чертову переменную. Только внутри init происходит сбой.
Traceback (most recent call last):
File "d:\Dropbox\program\main.py", line 18, in <module>
result = results()
File "d:\Dropbox\program\interface\results.py", line 59, in __init__
self.labelShowClass.configure(text=Class)
NameError: name 'Class' is not defined