如何在 Python 3 中打印另一个 window 中的条目?

How to print something from Entry in another window in Python 3?

为什么它不打印我在新窗口的文本框中输入的字符串值?

from tkinter import *

def newwindow():
    newwindow = Tk()
    newwindow.title('Sign Up')
    newwindow.geometry('200x400')

    def sign_done():
        david = a.get()
        javed = b.get()
        lbee = Label(newwindow, text=david).pack()
        baeee = Label(newwindow, text=javed).pack()

    a = StringVar()
    b = StringVar()
    user = Entry(newwindow, textvariable=a).pack()
    pword = Entry(newwindow, textvariable=b).pack()

    done = Button(newwindow, text='done now', command=sign_done).pack()

    newwindow.mainloop()

root = Tk()
root.title('Gulmeena')
root.geometry("500x200")
button = Button(root, text='Go', command=newwindow).pack()

root.mainloop()

请不要使用类

仅使用 Tk 创建主要 window。要创建任何其他 window,请使用 Toplevel。并且只使用一个 mainwindow().

var = Widget(...).pack()None 分配给 var 因为 pack()/grid()/place() returns None .你必须分两行来做。

var = Widget(...) 
var.pack(). 

如果你不需要 var 那么你可以

Widget(...).pack()

使代码更具可读性

  • 我使用 import tkinter as tk 来表示我使用 tk.Button,而不是 ttk.Button nor my own classButton`
  • 我使用名字 user_varpassword_var 这意味着什么
  • 我把所有的函数都放在开头——甚至在 newwindow
  • 里面

代码:

import tkinter as tk

def newwindow():

    def sign_done():
        david = user_var.get()
        javed = password_var.get()
        tk.Label(newwindow, text=david).pack()
        tk.Label(newwindow, text=javed).pack()

    newwindow = tk.Toplevel()
    newwindow.title('Sign Up')
    newwindow.geometry('200x400')

    user_var = tk.StringVar()
    password_var = tk.StringVar()

    user = tk.Entry(newwindow, textvariable=user_var)
    user.pack()
    pword = tk.Entry(newwindow, textvariable=password_var)
    pword.pack()

    tk.Button(newwindow, text='done now', command=sign_done).pack()

root = tk.Tk()
root.title('Gulmeena')
root.geometry("500x200")

tk.Button(root, text='Go', command=newwindow).pack()

root.mainloop()

你可以在没有 StringVars

的情况下做同样的事情
import tkinter as tk

def newwindow():

    def sign_done():
        david = user.get()
        javed = pword.get()
        tk.Label(newwindow, text=david).pack()
        tk.Label(newwindow, text=javed).pack()

    newwindow = tk.Toplevel()
    newwindow.title('Sign Up')
    newwindow.geometry('200x400')

    user = tk.Entry(newwindow)
    user.pack()
    pword = tk.Entry(newwindow)
    pword.pack()

    tk.Button(newwindow, text='done now', command=sign_done).pack()


root = tk.Tk()
root.title('Gulmeena')
root.geometry("500x200")

tk.Button(root, text='Go', command=newwindow).pack()

root.mainloop()