大佬教程收集整理的这篇文章主要介绍了类 ShareGUI 未定义,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近在我的代码中遇到了一个问题 - 它无法识别我导入的类...你能帮帮我吗??我基本上只是做了一些课程来使我的 gui 工作流程更有效率。例如,buttonFrame 2 只是一个获取大小、静态标题和 2 个按钮标签并制作 gui 框架的类。
from buttonFrame2 import *
from ShareGUI import *
class ChooseShareGUI(buttonFrame2):
"""
ask to have permission to take files from other
users.
"""
def __init__(self,username,clIEnt):
"""
:param e: event handler
"""
super().__init__(None,HOME_PAGE_title,HOME_PAGE_title + " - " + username,ASK_FOR_SHARE_BTN,SHARE_BTN,SYstem_REGISTER_PANEL_SIZE,clIEnt)
self.btn2.bind(wx.EVT_Button,self.on_sharE)
def on_share(self,E):
"""
:param e: event handler
:return: shows List of my files to share
"""
self.Close()
ShareGUI(self.clIEnt)
那么,这是 ShareGUI 类:
from ChooseUserGUI import *
from GeneralGUI import *
from ReadRegistry import *
import os
class ShareGUI(GeneralGUI):
"""
opens a window with directory dialog and a Next button
"""
def __init__(self,SHARE_title,INIT_CLOUD_GUI_SIZE,clIEnt)
self.file_to_share = None
self.static_txt = wx.StaticText(self.pnl,label=CHOOSE_file_TO_SHARE)
self.nexT_Btn = wx.button(self.pnl,label=NEXT_BTN)
self.nexT_Btn.bind(wx.EVT_Button,self.on_next)
self.browser = wx.filePickerCtrl()
self.browser.Create(self.pnl,path=self.clIEnt.cloud,pos=wx.Defaultposition,size=wx.DefaultSize,style=wx.DIRP_DEFAulT_STYLE,name=wx.DirPickerCtrlnameStr)
self.position()
self.Show()
def position(self):
"""
:return: positions everything nicely
"""
self.sizer.Add(window=self.static_txt,proportion=PROPORTION,flag=wx.ALL | wx.CENTER,border=border_smaLL)
self.sizer.Add(window=self.browser,border=border_LARGE)
self.sizer.Add(window=self.nexT_Btn,border=border_smaLL)
self.SetSizer(self.sizer)
当我运行我的代码时,错误是:
line 38,in on_share
ShareGUI(self.clIEnt)
nameError: name 'ShareGUI' is not defined
求求你我真的不知道该怎么办!!!
您的导入有问题,您显示的代码不完整。我总是做一个“最小可行的例子”来将问题归结为本质。您向我们展示的内容令人不悦(野生/加星标导入),但它确实@H_772_27@有效(如果您的不完整样本被分解为可能的样子)。
最小可行示例,在 main.py 中打印“Hello”:
from ShareGUI import *
ShareGUI()
并且在同一个文件夹中/在 ShareGUI.py
上有一个 PYTHONPATH
:
class ShareGUI:
def __init__(self):
print('Hello')
你可能在第二次尝试时做了什么:
import ShareGUI
# …
ShareGUI() # -> TypeError,why do you call a module?
ShareGUI.ShareGUI() # works
,
关于导入以及如何访问您感兴趣的类中的对象,您需要回到绘图板。
探索您有权访问的内容的一个有用工具是 dir()
。
假设您要导入的类如下:
class ShareGUI:
def __init__(self):
print('Hello')
self.client = "Myclient is alive"
从命令行使用 python 解释器:-
>>> from ShareGUI import *
>>> dir(ShareGUI)
['__class__','__delattr__','__Dict__','__dir__','__doc__','__eq__','__format__','__ge__','__getattribute__','__gt__','__hash__','__init__','__init_subclass__','__le__','__lt__','__module__','__ne__','__new__','__reduce__','__reduce_ex__','__repr__','__setattr__','__sizeof__','__str__','__subclasshook__','__weakref__']
>>> dir(ShareGUI())
Hello
['__class__','__weakref__','client']
>>> ShareGUI().client
Hello
'Myclient is alive'
但是,如果我们更改 import
,您将得到不同的结果:-
>>> import ShareGUI
>>> dir(ShareGUI)
['ShareGUI','__builTins__','__cached__','__file__','__loader__','__name__','__package__','__spec__']
>>> dir(ShareGUI.ShareGUI)
['__class__','__weakref__']
>>> dir(ShareGUI.ShareGUI())
Hello
['__class__','client']
>>> ShareGUI.ShareGUI().client
Hello
'Myclient is alive'
如您所见,您如何执行 import
,直接影响您访问导入对象及其组件的方式。
您选择如何导入和访问由您决定,但它们必须一致。
注意参考您的一个评论,self.client
声明客户端是 ShareGUI 中的一个项目,从该类之外引用它,您需要删除 self
(您不在 {{1} } 班级)。您必须将其称为组件 ShareGUI
of
,因此它只是 ShareGUI
以上是大佬教程为你收集整理的类 ShareGUI 未定义全部内容,希望文章能够帮你解决类 ShareGUI 未定义所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。