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

问题描述 投票:-3回答:1

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

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()

请不要使用类

python python-3.x tkinter tkinter-entry
1个回答
4
投票

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

var = Widget(...).pack()None分配给var因为pack() / grid() / place()返回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()
© www.soinside.com 2019 - 2024. All rights reserved.