【问题标题】:how to get a value out of a class's init function python如何从类的init函数python中获取一个值
【发布时间】:2021-04-23 16:45:11
【问题描述】:

我正在使用tkinter 的基于类的结构,我需要获取文本输入的值。我该怎么做?

以下是相关代码:

#GUI
class PseudostreamWidget(tk.Frame):

    def __init__(self, master=None, **kw):
        tk.Frame.__init__(self, master, **kw)
        self.targetIP = tk.Entry(self.Ipconfig)
        self.targetIP.configure(background='black', font='{Lato} 12 {}', foreground='white', highlightbackground='black')
        self.targetIP.configure(highlightcolor='black', justify='left', relief='raised')
        _text_ = '''Friend's Public IP Here'''
        self.targetIP.delete('0', 'end')
        self.targetIP.insert('0', _text_)
        self.targetIP.grid(column='1', row='0')
        #
        #
        #
        target_ip = self.targetIP
        #
        # 

如何让它在课堂外打印target_ip

if __name__ == '__main__':
    root = tk.Tk()  
    widget = PseudostreamWidget(root)
    widget.pack(expand=True, fill='both')
    root.mainloop()

print(target_ip)

【问题讨论】:

  • 只需使用widget.targetIP,因为您分配了self.targetIP(并且widget 在构造函数中是self)。
  • 当您尝试将tkinter get value from Entry widget 放入搜索引擎时发生了什么?
  • @AKX 我不认为 OP 知道如何使用事件驱动编程:/

标签: python python-3.x tkinter tkinter-text


【解决方案1】:

试试这个:

import tkinter as tk


class PseudostreamWidget(tk.Frame):
    def __init__(self, master=None, callback=None, **kwargs):
        super().__init__(master, **kwargs)
        self.targetIP = tk.Entry(self, fg="white", justify="left",
                                 relief="raised", highlightbackground="black",
                                 highlightcolor="black", bg="black",
                                 insertbackground="white", font=("Lato", 12))
        # self.targetIP.delete(0, "end") # No need for this
        self.targetIP.insert(0, "Friend's Public IP Here")
        self.targetIP.grid(column=1, row=0)
        self.targetIP.bind("<Return>", callback)


def submit_data(event=None):
    print("You typed in:", widget.targetIP.get())

root = tk.Tk()
widget = PseudostreamWidget(root, callback=submit_data)
widget.pack()
root.mainloop()

要使用它,只需在条目中写一些东西,然后按键盘上的Enter 键。

它传入一个函数 (submit_data) 并绑定到它。

【讨论】:

  • 嘿,谢谢这个作品,但我只是好奇,我应该读什么才能得到这个?这是我第一次使用基于类的 Tkinter 结构,而且,一旦我将它与我的代码集成,我会接受这是最好的答案,这比我预期的要困难,可以吗,如果我尝试几个小时,如果我没有得到它,我可以向你寻求帮助吗?
  • @VardhanMahajan 你应该阅读/体验event driven programming。基本上代码不应该从上到下流动(大部分时间)。当用户执行单击/按下键盘按钮等操作时,应调用函数。在这种情况下,用户选择何时按下Enter 键。这就是为什么我定义了一个函数来处理它。
  • @VardhanMahajan 你可以随时寻求我的帮助:D。这就是我在这个网站上的原因。
  • 哦,伙计,非常感谢你,顺便说一句,我只是接受你的回答,谢谢你的时间和精力真的很感激!
  • 老兄,你怎么这么好,我不明白。 stackoverflow 上的大多数人都非常友善和乐于助人,而您超出了这一点,我不明白,但感谢您的帮助和情绪。你是一个非常好的人!当我变得更好时,我保证会传授知识并帮助其他人。同时我将阅读基于事件的编程
猜你喜欢
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
相关资源
最近更新 更多