Я хотел создать простой графический интерфейс с wxpython (в python 3.6.1), потому что я больше не хотел использовать командную строку для этого проекта.
У меня есть большой файл для логики в другом файле, который также используется другими файлами, отличными от wxpython.
Но когда я пытаюсь импортировать свой класс логики, я получаю эту ошибку:
ImportError: cannot import name 'QuestionAsk'
Я использую эту строку для импорта класса логики:
from Get import QuestionAsk
Файл Get.py находится в том же каталоге, что и файл gui. Здесь
Но это не работает, почему и как я могу импортировать этот файл?
Кстати, я вызываю файл gui.py из файла get.py и импортирую файл get.py из файла Asker.py.
ps: Пожалуйста, постарайтесь не отвечать: «просто скопируйте содержимое этого класса в свой файл GUI», потому что я использую этот класс в другом месте, если нет другого решения, тогда это нормально, но это просто уродливо и неэффективно.
Редактировать Вот код из файла Get, который запускает графический интерфейс:
def graphical_start():
app = wx.App(False) # int app
frame = GuiVocCard() # set frame (GuiVocCard is in the main Gui File)
frame.Show() # show frame
app.MainLoop() # execute loop
И вот начало основного класса Gui "GuiVocCard":
class GuiVocCard(wx.Frame):
def __init__(self):
self.language = "es"
self.transList = "C:\\Users\\Justus\\Desktop\\Schule\\spa\VocabGeter\\translations\\big_translation.json"
self.verb_forms = [0,2]
self.High_Score = 0
self.s_file = "scores.json"
self.S_chunk = 40
self.chunk_file = "chunks.json"
self.load_config()
self.q_ask = QuestionAsk(lan=self.language, trans=self.transList, verb_forms=self.verb_forms,
scores_file=self.s_file, chunks_file=self.chunk_file, chunk_size=self.S_chunk)
...
Изменить 2:
QuestionAsk определяется здесь, в файле Get.py:
class QuestionAsk:
def __init__(self,lan = "es",trans = "C:\\Users\\Justus\\Desktop\\Schule\\spa\VocabGeter\\translations\\translation.json"
,verb_forms=[0,2],scores_file = "scores.json",chunks_file = "chunks.json",chunk_size=40):
self.language = lan
self.transList = trans
self.verb_forms = verb_forms
self.High_Score = 0
self.s_file = scores_file
self.S_chunk = chunk_size
self.chunk_file = chunks_file
Исправлено (ура):
Я удалил функцию graphical_start из файла Get.py и вставил ее в файл gui.py. Теперь я импортирую файл Gui.py прямо из файла Asker.py.
ModuleNotFoundError: нет модуля с именем Get.py; Get - это не пакет
попробуйте from .Get import QuestionAsk
Ярмарки, было бы полезно увидеть фрагмент кода Get.py?
from .Get import QuestionAsk выдает эту ошибку: ImportError: попытка относительного импорта без известного родительского пакета
Какая часть это 27кб?
@JustusLaube - часть, в которой определяется QuestionAsk, не обязательно должна включать в себя все QuestionAsk, а также, возможно, начальное определение Get, просто чтобы правильно знать
@JustusLaube, вы забыли указать, где определен класс QuestionAsk (это class QuestionAsk()). Является ли QuestionAsk подклассом чего-либо в Get.py? Если это подкласс, импортируйте его через from Get import ParentClass.QuestionAsk
у Clask Question Ask нет родительского класса.
Посмотрите здесь: (Возможный дубликат) stackoverflow.com/questions/9252543/…
Спасибо Макс, исправил! Я просто переместил функцию "graphical_start" из файла Get.py в файл gui.py и импортировал файл gui.py непосредственно из файла Asker.py.





попробуйте
from Get.py import QuestionAsk