【问题标题】:Trying to pass the variable "data" from "on_select" to the Text-Widget试图将变量“数据”从“on_select”传递给文本小部件
【发布时间】:2015-03-29 14:36:22
【问题描述】:

我正在尝试将变量“data”从“on_select”传递到 Text-Widget。因此,某人导入的文件的内容通过选择列表框中的项目来更改。但我还是一个非常初学者,不知道如何传递数据的价值。有人可以在这里帮助我吗?谢谢!

from Tkinter import *
import tkFileDialog
root=Tk()
data = "Bitte eine Datei importieren."

class View(Listbox):
    def __init__(self, master):
        Listbox.__init__(self, master, width=75, selectmode=SINGLE)

class Controller(object):
    def __init__(self, master):
        self._master = master

        frame1 = Frame(self._master)
        frame1.pack(side=LEFT, fill=BOTH, padx=5,expand=True)

        self._Listbox=View(frame1)
        self._Listbox.pack(side = TOP,fill=BOTH, expand = True,pady=20)

        menubar = Menu(self._master)
        filemenu = Menu(menubar, tearoff=0)
        filemenu.add_command(label="Importieren", command = self.file_open)
        filemenu.add_command(label="Beenden", command = quit)
        menubar.add_cascade(label='File',menu=filemenu)
        self._master.config(menu=menubar)

    def on_select(event):
        filename = self._Listbox.get(self._Listbox.curselection()[0])

        global data
        data = "Test"

        with open(filename,'r') as f:
            data = f.readlines()
        print data

    self._Listbox.bind('<<ListboxSelect>>', on_select)      

    def file_open(self):
        filename = tkFileDialog.askopenfilename()
        self._Listbox.insert(END,filename)

T = Text(root, height=2, width=30)
T.pack()
T.insert(END, data)
print data           

if __name__ == "__main__":
    c=Controller(root)
    root.mainloop()

【问题讨论】:

    标签: python variables tkinter global-variables


    【解决方案1】:

    控制器需要知道文本小部件才能控制它。因此,在创建控制器时传递文本小部件。

    class Controller(object):
        def __init__(self, master, text):
            self.text = text
            ...
        def on_select(self, event):
            ...
            self.text.insert("end", data)
            ...
    ...
    T = Text(...)
    ...
    if __name__ == "__main__":
        c=Controller(root, T)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2021-12-22
      • 2020-07-30
      • 2015-02-19
      • 1970-01-01
      相关资源
      最近更新 更多