【问题标题】:How to print something from Entry in another window in Python 3?如何在 Python 3 的另一个窗口中打印条目中的内容?
【发布时间】:2023-04-03 07:15:02
【问题描述】:

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

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 来创建主窗口。要创建任何其他窗口,请使用TopLevel。并且只使用一个mainwindow()
  • var = Widget(...).pack()None 分配给var,因为pack()/grid()/place() 返回None。你必须分两行来做。 var = Widget(...)var.pack()。如果您不需要var,那么您可以使用Widget(...).pack()
  • @furas:您应该添加有用且正确的 cmets 作为答案。
  • @Sawaid 这两个问题都非常受欢迎,所以问题应该作为重复而关闭。
  • @furas 我认为这应该相当封闭,因为太宽泛了。

标签: python python-3.x tkinter tkinter-entry


【解决方案1】:

仅使用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()

【讨论】:

    猜你喜欢
    • 2018-05-18
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多