Как вызвать tk.Label из отдельного скрипта Python - PullRequest
0 голосов
/ 08 мая 2019

У меня есть скрипт на 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.Однако, когда второй скрипт вызывается первым, я просто получаю пустую метку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...