我对 Python 相当陌生,这是我使用 tkinter 的第一个项目。我的整个项目运行良好,只有一个例外。我已将 tkinter 代码构建到一个类中,一切正常,但我不知道如何从类外部调用这些方法。
当我在 main 中的以下行创建对象时,出现 NameError: name 'robotGUI' is not Defined
class botGUI:
def __init__(self):
#Init Code
def updateStatus(self):
#Code Here
robotGUI = botGUI()
如果我将变量“robotGUI”初始化为 None,代码就会运行,但是当我稍后尝试访问其方法之一时,我会收到 AttributeError: 'NoneType' object has no attribute 'doSomething'。似乎没有创建 robotsGUI 对象,但我不明白为什么。
我到处搜索并找到了一些接近的答案,但没有任何与这个问题完全相关的答案。我有一些其他类在这个程序中运行得很好,所以我确信它与 tkinter 和它的内部主循环有关,只是无法确定它。
这是我大大减少和简化的代码,显示了问题:
#!/usr/bin/env python3
#Imports
import socket, select, errno, sys, queue, time, threading, cv2
from tkinter import *
from tkinter import font
from PIL import Image, ImageTk
#GUI
class botGUI:
def __init__(self):
#Create the Window Object and Setup the Window
self.window = Tk()
self.window.geometry("800x480+0+0")
self.window.overrideredirect(True)
self.window.fullScreenState = False
#Code to Generate Gaphics Here .....
#Call Repeating Status Update Script and Start the Main Loop
self.updateStatus()
self.window.mainloop()
def updateStatus(self):
#Code to Handle Updating Screen Objects Here ....
print("Update Status Running")
#Set this function to be called again
self.window.after(1000, lambda: self.updateStatus())
def doSomething(self, myStr):
#Code to change something on the screen ...
print(f"Command: {str(myStr)}")
def doSomethingElse(self, myStr):
#Code to change something on the screen ...
print(f"Command: {str(myStr)}")
饮歌长啸
心有法竹
相关分类