#python #tkinter
#python #tkinter
Вопрос:
Я знаю, что этот вопрос обсуждается на форумах, и я много читал об этом, но у меня все еще нет нужного мне решения.
Следующий код — очень упрощенная версия моего реального кода.
Мой первый сценарий следующий (kyssa1.py ):
import os
import sys
def type():
global dictionary
dictionary="C:Python27Myprojectsphysics.txt"
os.system("C:Python27Myprojectskyssa2.py")
from Tkinter import *
t = Tk()
b = Button(t, text="Start", command = lambda:type())
b.pack(expand=Y)
t.mainloop()
И мой второй скрипт (kyssa2.py ) следует:
# -*- coding: utf-8 -*-
from kyssa1 import dictionary
def open():
global dictionary
global lines
global datafile
datafile = file(dictionary)
lines = [line.decode('utf-8').strip() for line in datafile.readlines()]
for i in lines:
text.insert(END, i)
open()
from Tkinter import *
root = Tk()
text = Text(root,font=("Purisa",12))
text.pack()
root.mainloop()
Что я хочу сделать, это открыть файл physics.txt в kyssa2.py и выполните команду в функции open() с этим текстом, но это работает не так, как я хочу. Что происходит, когда я нажимаю кнопку «Пуск», — это другое окно, подобное определенному в «kyssa1.py » появляется. Как я мог просто передать словарь переменных из одного скрипта в другой?
Ответ №1:
В kyssa1.py
объявлении dictionary
в области видимости модуля, т.е. Вне type()
функции. Вам не нужно использовать global
in kyssa2.py
, вы можете обратиться непосредственно к dictionary
.
Кроме того, чтобы открыть файл, используйте open()
вместо file()
:
datafile = open(dictionary)