在Python上将数据返回到我的GUI应用程序

时间:2017-07-24 12:26:12

标签: python database user-interface tkinter

我再次来到这个令人敬畏的社区寻求帮助。 我发现了一些类似的问题,但不完全是这样。

我用Python编写了一个程序,用porpouse作为一个非法工具(因为商业软件非常昂贵)。

我的代码已经完成,现在我正试图将它放在一个简单的GUI中给我的学生。 (顺便说一下,我使用tkinter)

下面的代码是我的一部分,我通过导入向导调用tk应用程序导入数据,并将数据存储为pandas数据帧。

import tkinter as tk
from tkinter import filedialog
import pandas as pd
import numpy as np

#import data
ascii_well=filedialog.askopenfilename()
df_test=pd.read_csv(ascii_well, sep="\s+", index_col=0, na_values=-999.25)

print(df_teste)

Out[5]: 
       a  b   c
 IDX                  
 0      2.1   2.2   30
 1      2.2   2.3  150

我想在GUI中放置一种显示此DataFrame的方法(如果它更容易实现,可能是一个数组)。但我不想将数据显示给用户。我想实现的方式是最终用户不仅可以查看数据,还可以更改数据框的值。

一个简单的例子

让我们说用户想要将de值2.1(列" a",IDX = 0)更改为3.

我在Spyder上编写代码,Python 3。

谢谢,伙计!!

1 个答案:

答案 0 :(得分:0)

这是一个简单的示例,说明如何使用Entry小部件为用户数据操作tkinter GUI中的变量。

这个例子非常简单,但应该很好地说明如何从用户那里获取数据并将其保存到变量然后显示该数据。

您可以修改使用数据库的方法,然后从那里开始。

import tkinter as tk

class tester(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)       

        self.parent = parent
        self.my_var = ""
        self.ent0 = tk.Entry(self.parent)
        self.ent0.pack()

        self.btn1 = tk.Button(self.parent, text="Save Values", command = self.save_values)
        self.btn1.pack()
        self.btn2 = tk.Button(self.parent, text="Load Values", command = self.load_values)
        self.btn2.pack()

    def save_values(self):
        print(self.ent0.get())
        self.my_var = self.ent0.get()
        self.ent0.delete(0, tk.END)

    def load_values(self):

        self.ent0.delete(0, tk.END)
        self.ent0.insert(tk.END, self.my_var)


if __name__ == "__main__":
    root = tk.Tk()
    app = tester(root)
    root.mainloop()

根据您的评论,我在下面提供了此代码的非类版本:

import tkinter as tk


root = tk.Tk()

my_var = ""
ent0 = tk.Entry(root)
ent0.pack()

def save_values():
    global my_var, ent0
    my_var = ent0.get()
    ent0.delete(0, tk.END)

def load_values():
    global my_var, ent0
    ent0.delete(0, tk.END)
    ent0.insert(tk.END, my_var)

btn1 = tk.Button(root, text="Save Values", command = save_values)
btn1.pack()
btn2 = tk.Button(root, text="Load Values", command = load_values)
btn2.pack()

root.mainloop()