Передача переменных в класс python tkinter, вызываемый как подпроцесс - PullRequest
0 голосов
/ 14 июля 2020

Хорошо, ребята, я новичок в SO и новичок в Python в целом. Сейчас работаю над личным приложением. Я бился головой в поисках возможного решения в течение нескольких дней, но безрезультатно.

По сути, у меня есть основной python скрипт, который позволяет называть его Master.py, теперь я хочу, чтобы Master.py вызывал виджет скрипт позволяет вызвать виджет Widget.py.

Widget.py - это объект класса, поэтому общий макет класса за вычетом всех объектов создания tkinter:

class widget(object):
    def __init__(self, input1, **kwargs):
        self.input1 = input1
       # then some further coding to create the widget. 

теперь в Мастере .py я хочу вызвать Widget.py и передать список переменных, но давайте оставим это простым для начала и просто передадим одну переменную, которую я определил как input1 (текстовая строка) в классе виджета. так как я хочу, чтобы виджет отображался, не задерживая остальную часть скрипта Master.py, я называю его как.

widget = subprocess.Popen(["python", "Widget.py", "Test String"])

, но это, похоже, не работает. Конечно, он создает виджет, но аргумент «Test String» не передается в виджет.

Я попытался использовать sys.argv [1], но получил ошибку вне допустимого диапазона. если я использую sys.argv [0], он возвращает путь к файлу и сценарий Master.py

Все, что я хочу, - это передать текст в класс виджета в качестве подпроцесса во время вызова для отображения всплывающего виджета, который не принимает НИКАКИХ ВХОДОВ ПОЛЬЗОВАТЕЛЯ, кроме того, что пользователь щелкает поле закрытия, чтобы закрыть виджет, и этот виджет отображает текстовую строку, переданную ему во время выполнения.

Я уверен, что здесь что-то не хватает ... был бы признателен за немного освещения ..

Конечно, я могу просто импортировать скрипт Widget.py и запустить его в Master.py, но тогда он не позволяет Master.py запускать остальную часть своего кода, отсюда и причина запуска виджета .py как подпроцесс. Я уже сделал это с другим объектом Tkinter, который просто отображает анимированный виджет, который не требует каких-либо аргументов, отправленных ему или от него. Но по какой-то причине я не могу отправлять аргументы в подпроцесс во время выполнения.

...