Как изменить значение переменной файла Python из другого файла? - PullRequest
0 голосов
/ 08 марта 2019

У меня есть два файла Python.Я хочу изменить значение переменной, вызвав модуль.

test.py

import tkinter
from tkinter import *
from tkinter import ttk

class Master(Tk):
    def __init__(self,parent):
        Tk.__init__(self,parent)
        self.initialize()


    def initialize(self):
        self.grid()
        self.my_clock = StringVar(self)
        self.my_clock.set("12:05")

        clock =Label(self,textvariable = self.my_clock,height=1,\
                     width=5,fg="black",bg="white",font=("Sans", 32,"bold"))

        clock.grid(column=0,row=0,sticky='SW')




window = Master(None)
window.configure(background="white")
window.mainloop()

test1.py

import test
test.window.my_clock.set("13:05")

Я не смог изменить значение переменной my_clockиз файла test1.py. Как я могу изменить значение переменной my_clock из файла test1.py.

Ответы [ 3 ]

0 голосов
/ 08 марта 2019

Если вы хотите, чтобы ваша программа test1 показывала окно, то ей нужно вызвать window.mainloop().

import test
window = test.Master(None)
window.my_clock.set("13:05")
window.mainloop()
0 голосов
/ 08 марта 2019

Вы вызываете mainloop только при непосредственном запуске test.py (когда __name__ == "__main__").Когда вы импортируете его, вам нужно снова запустить mainloop.Измените test1.py на:

import test

m = test.Master(None)
m.my_clock.set("13:05")

m.mainloop()
0 голосов
/ 08 марта 2019

Когда вы делаете:

import test
test.Master(None).my_clock.set("13:05")

Вы делаете следующее:

  • Импортный тест
  • Создание экземпляра нового класса Master (<=> новый объект)
  • Установите новое значение для свойства my_clock вашего нового объекта
  • Затем этот новый объект «исчезает», поскольку он не был сохранен в переменной.

Две возможности здесь:

Создание экземпляра вашего объекта в вашем test.py

test.py

class Master(Tk):
    def __init__(self,parent=None):
        (...)

window = Master()
(...)

test2.py

import test
test.window.my_clock.set("13:05")

Или используйте переменную класса

test.py

class Master(Tk):
    my_clock = StringVar()
    def __init__(self,parent=None):
        (...)

test2.py

import test
test.Master.my_clock.set("13:05")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...