【发布时间】:2019-06-28 19:03:45
【问题描述】:
我希望这不是重复的,看来我是少数喜欢将 Tkinter 用作 Tkinter 而不是 TK 的人之一...... 所以几乎我正在使用类来制作窗户。第二个窗口创建了一个用户,但我在不同的类中使用该值“用户名”时遇到了问题。 我错过了什么?
(免责声明,窗户很丑,我专注于使功能正常工作。)
我已经尝试将值 username 设置为 clicku() 函数的全局部分....如此处所示)...我已经将它移动了,尝试与当地合作...我迷路了。将条目设为自己的类会保存这个问题吗????
from tkinter import *
class Window(Frame):
def __init__(self, master=None, *args, **kwargs):
Frame.__init__(self,master,*args,**kwargs)
self.pack()
self.pack_propagate(0)
self.labelone = Label(self, text = "Welcome to our class! Click start to begin")
self.labelone.grid(row=1,column=1)
self.buttonone = Button(self, text="start", command=click)
self.buttonone.grid(row=2,column=1)
class Startwindow(Frame):
def __init__(self, master=None, *args, **kwargs):
Frame.__init__(self,master,*args,**kwargs)
self.grid(row=5,column=5)
self.grid_propagate(0)
self.text = Label(self, text = "What is your name?")
self.text.grid(row=0,column=0)
self.entry = Entry(self, width=15)
self.entry.grid(row=1,column=0)
self.buttontwo = Button(self, text="enter", command=clicku)
self.buttontwo.grid(row=1,column=1)
self.username = self.entry.get()
class introwindow(Frame):
def __init__(self, master=None,*args,**kwargs):
Frame.__init__(self,master,*args,**kwargs)
user = str(w2.username)
self.grid()
self.grid_propagate(0)
self.a = Label(self, text = "Aki: ")
self.a.grid(row = 0, column = 0)
self.sp1 = Label(self, text = "Hi" + w2.username)
self.sp1.grid(row = 0, column = 1)
self.sp2 = Label(self, text = "Nice to meet you!")
self.sp1.grid(row = 1, column = 1)
self.talk = Entry(self, width = 15)
def click():
global w2
w.destroy()
w2 = Startwindow(root,width=500,height=500)
def clicku():
w2.destroy()
w3 = introwindow(root,width=500,height=500)
root = Tk()
w = Window(root, bg="red",width=500,height=500)
root.mainloop()
我只是希望在introwindow 中打印用户名,作为Label sp1 的一部分。
【问题讨论】:
-
为什么你认为它不起作用?它在做什么?它会抛出错误吗?如果是这样,错误是什么?如果不是,它在做什么?这与您的预期有何不同?
标签: python function class tkinter frames