简体   繁体   English

python tkinter 模块 Label 包裹在 oop 中的小部件

[英]python tkinter module Label widget wrapped in oop

I am practicing on my personal project to create oop from tkinter module.我正在练习从 tkinter 模块创建 oop 的个人项目。 I have written a code block where I try to create Label widget by imperative code line, then within a class.我写了一个代码块,我尝试通过命令式代码行创建 Label 小部件,然后在 class 中。

from tkinter import *

app=Tk()
app.geometry('500x300')
Button(app,width=13,height=1,text='scrape').pack()
var_str=StringVar()
var_str='result 001 ...'
Label(app,width=33,height=1,text='res',textvariable=var_str).pack()

class label():
    def __init__(self,master,var_text):
        self.label=Label(master,width=33,height=1,textvariable=var_text).pack()

lbl_one=label(app,var_str)
app.mainloop()

The strangeness is if I comment out Label(app,width=33,height=1,text='res',textvariable=var_str).pack() then my object instantiation does not work out.奇怪的是,如果我注释掉Label(app,width=33,height=1,text='res',textvariable=var_str).pack()那么我的 object 实例化就不起作用了。 I would like to have a clear answer why lbl_one object gives same text result as with Label(app...) line?我想清楚地回答为什么lbl_one object 给出与 Label(app...) 行相同的文本结果?

because you probably forgot that u put StringVar at top then changed it to string which not work.因为您可能忘记了将 StringVar 放在顶部然后将其更改为不起作用的字符串。

var_str=StringVar(master=app, value="res")

replace that line to this and comment the first label's line then the object would work fine.将该行替换为此并注释第一个标签的行,然后 object 将正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM