小编sar*_*gof的帖子

通过Tkinter类传递数据帧

我使用的是Python 2.7和Tkinter.我几乎是面向对象程序的新手.我有一个很长的程序,有许多Tkinter窗口,在某些时候我要求用户加载我用Pandas读取的Excel文件,并希望永久使用和更新该值(数据变量).我现在这样做的方式是使用全局变量,但我知道它是危险的,效率低下而且根本不优雅.

尽管我可以根据构建我的gui类的方式执行controller.show_frame(framename),但我最终自己构建了一些框架,因此数据变量会自行更新.

我在Stack Overflow中阅读并尝试了一些答案但可能已经错误地实现了它们:

  • 尝试在gui类中创建一个字典,类似于self.app_data = {data=[],filename=""}从其他窗口更新它,这里的事情是我认为类gui只实例化了一次,它创建了所有其他窗口类,所以这不起作用.也许我在那里做错了什么.(未在代码上显示).
  • 试图按照这里的建议去做一些事情,但我可能无法让它发挥作用.

主框架是我需要用于其他目的的某种中间步骤; 以下代码是我的程序的简化.

我知道这是一个糟糕的噩梦代码!谢谢 :)

import Tkinter as tk
import pandas as pd 
import tkFileDialog
import tkMessageBox
global data, strat_columns, filename
data = pd.DataFrame([])
strat_columns = []
filename = ""

class gui(tk.Tk):

    data = pd.DataFrame([])
    filename = ""
    def __init__(self):
        tk.Tk.__init__(self)
        container = tk.Frame(self)
        container.pack(side="top",fill="both",expand=True)
        self.frames = {}

        for F in (main_frame, first_frame):
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky="nsew")
        self.show_frame(main_frame)

    def show_frame(self,sel_frame): …
Run Code Online (Sandbox Code Playgroud)

python oop class tkinter python-2.7

17
推荐指数
1
解决办法
1134
查看次数

标签 统计

class ×1

oop ×1

python ×1

python-2.7 ×1

tkinter ×1