程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了类 ShareGUI 未定义大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决类 ShareGUI 未定义?

开发过程中遇到类 ShareGUI 未定义的问题如何解决?下面主要结合日常开发的经验,给出你关于类 ShareGUI 未定义的解决方法建议,希望对你解决类 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,请注明来意。
标签:未定义