Tkinter 面向对象

问题描述 投票:0回答:1

我是 Tkinter 模块的新手,我尝试将 OOP 与 Tkinter 一起使用。我的代码没有错误,但列表框小部件没有输出,这是我的代码:

from tkinter import *
class Test:
   word = ""
   def __init__(seld , w):
       self.word = w.get()

   def Try(self):
       return self.word

win = Tk()
a = StringVar()
win.geometry("750x750")
l1 = Label(win , text = "Name").grid(row = 0 , column = 0)
e1 = Entry(win , textvariable = a).grid(row = 0 , column = 1)
t = Test(a)
b = Button(win , text = "Show" , command = t.Try).grid(row = 1 , column = 0)
lb = Listbox(win , width = 50)
lb.grid(row = 2 , column = 0)
lb.insert(1 , t.Try)
win.mainloop()

有人可以帮助我吗?谢谢

python oop tkinter listbox
1个回答
1
投票

当您创建

t
对象时,您给出 I'm 此刻
a
的值。所以在创建时,
a.get()
的值是一个空字符串,因为程序刚刚开始运行。你应该尝试这个:

from tkinter import *
class Test:
   def __init__(self , w):
       self.w = w

   def Try(self):
       return self.w.get()

win = Tk()
a = StringVar()
win.geometry("750x750")
l1 = Label(win , text = "Name").grid(row = 0 , column = 0)
e1 = Entry(win , textvariable = a).grid(row = 0 , column = 1)
t = Test(a)
b = Button(win , text = "Show" , command = t.Try).grid(row = 1 , column = 0)
lb = Listbox(win , width = 50)
lb.grid(row = 2 , column = 0)
lb.insert(1 , t.Try())
win.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.