gpt4 book ai didi

python - 如何在整个类中声明全局变量?

转载 作者:太空宇宙 更新时间:2023-11-03 20:19:42 28 4
gpt4 key购买 nike

我是 python 新手,我正在尝试编写一个程序,通过选定的 COM 端口连接到 Arduino,并不断更新状态(连接或断开连接)

我使用的计时器每 1 秒更新一次。这里的问题是每次我运行代码时,它都会说 Ontimer 中的 Ser 未定义,即使我之前在 on_press 中声明了它。我该如何解决这个问题?

class GuiFrame(wx.Frame):
def __init__(self,parent,title):
super().__init__(parent, title = title, size =(950,550))
self.InitUI()

def InitUI(self):
panel = wx.Panel(self)

self.timer = wx.Timer(self, 1)
self.timer.Start(100)
self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer)

st1 = wx.StaticText(panel, label='COM port: ', pos=(5, 5))

self.text_ctrl = wx.TextCtrl(panel, pos=(5, 30))

my_btn = wx.Button(panel, label='Enter', pos=(5, 65))
my_btn.Bind(wx.EVT_BUTTON, self.on_press)

self.sb = self.CreateStatusBar()

def on_press(self,event):
global Ser
com = self.text_ctrl.GetValue()
if not com:
print("Please enter port!")
else:
Ser = SerialCom(com,115200)
self.sb.SetStatusText(Ser.connect())
time.sleep(1)

def OnTimer(self, event):
global Ser
self.sb.SetStatusText(Ser.status())

最佳答案

[...] how can I make sure that Ser is always defined?

通过None初始化全局命名空间中的变量Ser:

Ser = None

在读取之前检查Ser != None:

class GuiFrame(wx.Frame):

def on_press(self,event):
global Ser
com = self.text_ctrl.GetValue()
if not com:
print("Please enter port!")
else:
Ser = SerialCom(com,115200)
self.sb.SetStatusText(Ser.connect())
time.sleep(1)

def OnTimer(self, event):
if Set != None:
self.sb.SetStatusText(Ser.status())

请注意,如果仅尝试读取变量,则 global statement没有必要。

关于python - 如何在整个类中声明全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58239800/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com