У меня есть скрипт на python, который устанавливает окно tkinter и пытается создать метку заголовка.Когда я запускаю этот скрипт самостоятельно, он работает.У меня также есть другой скрипт, который имеет собственное окно tkinter, в котором есть кнопка для вызова другого скрипта.Когда я вызываю другой скрипт через эту кнопку, все еще появляется новое окно и рамка метки, но она не содержит текста.
Я думал, что это как-то связано с использованием одной и той же переменной "title" в обоих скриптах,но я упростил первое окно tkinter, чтобы в нем не было ничего, кроме кнопки.
my_second_script.py VVVV
import Tkinter as tk
def build_title_widget():
title2 = tk.StringVar()
title2_label = tk.Label(sub, textvariable = title2, padx = 10, pady = 10,
fg = 'Midnight Blue', bg = 'white')
title2.set('Hello World!')
title2_label['relief'] = 'ridge'
title2_label.config(font = ("Calibri", 44))
title2_label.pack()
def make_title_window():
global sub
sub = tk.Tk()
build_title_widget()
sub.mainloop()
make_title_window()
^^^^^^ ________ Этот сценарий работает на себя __________ ^^^^^^^
VVVVVV ___ Этот сценарий не работает, когда он вызывает 2-й сценарий ____ VVVVV
#my_first_script.py
import Tkinter as tk
top = tk.Tk()
def run_other_script():
my_second_script.make_title_window()
def build_buttons(): #sets up frame for button widgets
button_frame = tk.Frame(top, padx=10, pady=10)
button_frame.pack(side = "top")
call_script_2 = tk.Button(top, text = "run other script", command = run_other_script)
call_script_2.pack()
build_buttons()
top.mainloop()
#my_2nd_script.py
import Tkinter as tk
def build_title_widget():
title2 = tk.StringVar()
title2_label = tk.Label(sub, textvariable = title2, padx = 10, pady = 10,
fg = 'Midnight Blue', bg = 'white')
title2.set('Hello World!')
title2_label['relief'] = 'ridge'
title2_label.config(font = ("Calibri", 44))
title2_label.pack()
def make_title_window():
global sub
sub = tk.Tk()
build_title_widget()
sub.mainloop()
Я думаю, что обе конфигурации должны отображать «Hello World!»в ярлыке окна Tkinter.Однако, когда второй скрипт вызывается первым, я просто получаю пустую метку.