如何在访问数据之前为tkinter顶层提供代码

2024-04-20 13:12:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让我的tkinter顶层有一个访问密钥,然后内容可以印刷的。它不输出任何错误,但当我提供访问密钥时,它不会将内容打印到我的终端。我更改了访问密钥,但仍然无法打印数据。在

来自tkinter import*

def qw():
    global en1
    if en1.get() == 2e2c2v:
        print("You have visa to Paris")
        tp.destroy()  # after printing should close the toplevel window
    else:
        print("you dont have access to print the data")


def login_toplevel():
    global en1
    tp = Toplevel()
    tp.geometry("300x300")
    en1 = Entry(tp)
    en1.pack()
    b = Button(tp, text="provide key to print", command=qw)
    b.pack()


root = Tk()
root.geometry("400x400")

b = Button(root, text= "print", command=login_toplevel).pack()

root.mainloop()

Tags: theto内容tkinterdefhave密钥root
3条回答

将访问键更改为字符串“2e2c2v”,然后为顶层窗口声明全局变量global en1, tp,并为这两个函数解析它

from tkinter import *


def qw():
    global en1, tp
    if en1.get() == "2e2c2v":
        print("You have visa to Paris")
        tp.destroy()  # after printing should close the toplevel window
    else:
        print("you dont have access to print the data")


def login_toplevel():
    global en1, tp
    tp = Toplevel()
    tp.geometry("300x300")
    en1 = Entry(tp)
    en1.pack()
    b = Button(tp, text="provide key to print", command=qw)
    b.pack()


root = Tk()
root.geometry("400x400")

b = Button(root, text= "print", command=login_toplevel).pack()

root.mainloop()

有几个问题:

  • 其他行的缩进不好(但我认为是复制/粘贴的错误)

  • if en1.get() == 2e2c2v:应该是if en1.get() == "2e2c2v":

  • 由于tp不是全局的,所以在上一次更正后输入正确的键时出错

更正后的完整代码应为:

from tkinter import *


def qw():
    global en1
    global tp
    if en1.get() == "2e2c2v":
        print("You have visa to Paris")
        tp.destroy()  # after printing should close the toplevel window
    else:
        print("you dont have access to print the data")


def login_toplevel():
    global en1
    global tp
    tp = Toplevel()
    tp.geometry("300x300")
    en1 = Entry(tp)
    en1.pack()
    b = Button(tp, text="provide key to print", command=qw)
    b.pack()


root = Tk()
root.geometry("400x400")

b = Button(root, text= "print", command=login_toplevel).pack()
root.mainloop()

编辑:

顺便说一句,我认为使用类而不是使用global会更好。它会给出这样的结果:

^{pr2}$

好吧,从您提供的示例中(在我修复缩进之后),我得到了一个“无效语法”错误,因为您试图将en1.get()与尚未声明的变量2e2c2v进行比较。在

更新此行。在

if en1.get() == 2e2c2v:

。到。在

^{pr2}$

在我做这件事之后,它对我起到了预期的效果。在

相关问题 更多 >