Python 如何在访问数据之前为tkinter toplevel提供代码
在打印内容之前,我试图让tkinter toplevel拥有访问密钥。它不会输出任何错误,但当我提供访问密钥时,它不会将内容打印到我的终端。我更改了访问密钥,但仍然无法打印数据 从tkinter进口*Python 如何在访问数据之前为tkinter toplevel提供代码,python,tkinter,toplevel,Python,Tkinter,Toplevel,在打印内容之前,我试图让tkinter toplevel拥有访问密钥。它不会输出任何错误,但当我提供访问密钥时,它不会将内容打印到我的终端。我更改了访问密钥,但仍然无法打印数据 从tkinter进口* def qw(): global en1 if en1.get() == 2e2c2v: print("You have visa to Paris") tp.destroy() # after printing should close the
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()
好的,从您提供的示例(在我修复缩进后)中,我得到一个“无效语法”错误,因为您试图将
en1.get()
与未声明的变量2e2c2v
进行比较
更新此行
if en1.get() == 2e2c2v:
。到
if en1.get() == "2e2c2v":
在我这样做之后,它对我来说就像预期的那样工作。好吧,从您提供的示例中(在我修复了缩进之后),我得到了一个“无效语法”错误,因为您试图将
en1.get()
与您尚未声明的变量2e2c2v
进行比较
更新此行
if en1.get() == 2e2c2v:
。到
if en1.get() == "2e2c2v":
在我完成这项工作后,它对我起到了预期的作用。有几个问题:
- 你的else行的缩进不好(但我认为这是复制/粘贴的错误)
应该是如果en1.get()==2e2c2v:
如果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()
编辑: 顺便说一下,我认为使用类比使用全局类更好。它会给出这样的结果:
import tkinter as tk
class Example:
def __init__(self):
self.root = tk.Tk()
self.root.geometry("400x400")
tk.Button(self.root, text= "print", command=self.login_toplevel).pack()
def start(self):
self.root.mainloop()
def qw(self):
if self.en1.get() == "2e2c2v":
print("You have visa to Paris")
self.tp.destroy() # after printing should close the toplevel window
else:
print("you dont have access to print the data")
def login_toplevel(self):
self.tp = tk.Toplevel()
self.tp.geometry("300x300")
self.en1 = tk.Entry(self.tp)
self.en1.pack()
b = tk.Button(self.tp, text="provide key to print", command=self.qw)
b.pack()
Example().start()
有几个问题:
- 你的else行的缩进不好(但我认为这是复制/粘贴的错误)
应该是如果en1.get()==2e2c2v:
如果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()
编辑: 顺便说一下,我认为使用类比使用全局类更好。它会给出这样的结果:
import tkinter as tk
class Example:
def __init__(self):
self.root = tk.Tk()
self.root.geometry("400x400")
tk.Button(self.root, text= "print", command=self.login_toplevel).pack()
def start(self):
self.root.mainloop()
def qw(self):
if self.en1.get() == "2e2c2v":
print("You have visa to Paris")
self.tp.destroy() # after printing should close the toplevel window
else:
print("you dont have access to print the data")
def login_toplevel(self):
self.tp = tk.Toplevel()
self.tp.geometry("300x300")
self.en1 = tk.Entry(self.tp)
self.en1.pack()
b = tk.Button(self.tp, text="provide key to print", command=self.qw)
b.pack()
Example().start()
将访问键更改为字符串“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()
将访问键更改为字符串“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()
更改为“2e2c2v”后,它会打印数据,但顶级tp不会销毁,因此出现以下错误:NameError:未定义名称“tp”,这是另一个错误。如果您还有其他问题,请提出另一个问题,我将很乐意为您提供帮助。更改为“2e2c2v”后,它会打印数据,但顶级tp不会销毁。出现以下错误:NameError:未定义名称“tp”,这是另一个错误。如果您还有其他问题,请提出另一个问题,我将很乐意在这方面帮助您。