Открытие нового окна с помощью кнопки tkinter - PullRequest
0 голосов
/ 05 апреля 2019

Как вы можете видеть из моего кода, я пытаюсь открыть новое окно с помощью кнопки. Окно открывается, но приветственное сообщение не отображается так, как я хочу.

Показывает Welcome PY_VAR0 PY_VAR1. Но я бы хотел показать имя.

Я пытался использовать команду return для возврата переменных из функции getvalue(), но она не работает.

def getvalue():
    name.get()
    surname.get()

def newwindow():
    window.destroy()
    window2 = tk.Tk()
    label3 = tk.Label(text="Welcome {} {}".format(name,surname)).grid()
    window2.mainloop()


button = tk.Button(window,text="Submit",command=getvalue and newwindow).grid(row=3,column=1)

window.mainloop()

Я хотел бы открыть новое окно с приветственным сообщением.

Ответы [ 3 ]

1 голос
/ 05 апреля 2019

Вы должны использовать .get(), чтобы получить значение из StringVar, IntVar и т. Д. - name.get(), surname.get()

label3 = tk.Label(text="Welcome {} {}".format(name.get(), surname.get()))
label3.grid()

И помните: для установки значения вам придется использовать variable.set(value) вместо variable = value

Кстати: у вас большая ошибка в этой строке (и других)

label3 = tk.Label(..).grid(..)

Он присваивает None label3, потому что grid()/pack()/place() return None

Вы должны сделать это в два этапа

label3 = tk.Label(..)
label3.grid(..)
0 голосов
/ 05 апреля 2019

Вы можете использовать messagebox, чтобы открыть новое окно, а также распечатать приветственное сообщение.это действительно просто.

from tkinter import Tk, Button

# Make sure to import messagebox like this, otherwise you might get issues
import tkinter.messagebox

def messagebox():
    tkinter.messagebox.showinfo('title','Welcome!')

def main():

    width, height = 500, 500

    root = Tk()
    root.geometry(f'{width}x{height}')
    root.title('My window')

    button = Button(root, width=150, height=70, command=messagebox)
    button.pack()

    root.mainloop()

if __name__ == "__main__":
    main()

Пожалуйста, import messagebox, как это показано, я не уверен, почему, но tkinter не любит другие способы.

0 голосов
/ 05 апреля 2019

Что происходит, когда вы print(name + " " + surname)?

Если эти переменные имеют правильные значения, возможно, вам следует попробовать переписать сценарий несколькими способами, например:

labelText = "Welcome " + name + " " + surname
label3 = tk.Label(text=labelText)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...