如何在另一个py文件中存储用户GUI条目

时间:2015-06-01 09:39:29

标签: python class inheritance button tkinter

我根据用户的GUI条目/选择从执行计算的代码(ui.py)中分离了我的GUI代码(calcs.py)。基本上,您输入数字并进行选择,然后点击开始,开始按钮应开始计算并打印出东西。以下是我的代码的相关部分提供的解释:

  1. 按下按钮后,方法开始:

    import calcs
    class Application:
        def sendGUIinput(self):
            self.entry1   = self.coeff1.get() #get entry 1
            self.entry2   = self.coeff2.get() #get entry 2
            self.entry3   = self.coeff3.get() #get entry 3
            calcs.CreateData(self.entry1, self.entry2) #pass entries 1 and 2 to calcs.py for calculations
    
  2. 请注意,app = Application(root)

    1. calcs.CreateData进行一些计算,然后调用另一个类进行其他计算:

       class CreateData:
           def __init__(self, entry1, entry2):
               """some calculations here produce self.someNewVar1 and self.someNewVar2"""
               CreateData2(self.someNewVar1, self.someNewVar2)
      
    2. 这就是我遇到此问题的地方。 calcs.CreateData2calcs.CreateData获取2个变量,但它还需要来自entry3的{​​{1}}。我不想将所有条目传递到Application.sendGUIinput(),然后从CreateData传递到CreateData。我想要做的是,在CreateData2中有一个来自ui.py的条目池,以便在我按下按钮后,calcs.py中的课程可以正常工作而无需calcs.py 。如果你能帮助我,我将不胜感激。提前谢谢你。

    3. 注意:我定义ui.py喜欢;

      calcs.CreateData2

      因此它接受除self之外的2个参数,但也需要来自ui.py的entry3

1 个答案:

答案 0 :(得分:0)

所以我要说我基本上同意@ Cu3PO42。如果您有大量可能具有任意大小的条目,请使用*args关键字将其解压缩,然后确保您的类可以处理任意大小的计算。

我认为如果它纯粹是关于尺寸的,那么老实说这是最好的前进方式。

如果需要更多详细信息,您希望汇集数据并存储它,或者我们不确定的其他一些复杂性。您可以使用中间DB并创建查询DB的类。根据具体情况,SQLNoSQL最有可能成为您需要的人选。如果您不想深入研究使用多种语言的程序(尽管PythonSQLNoSQL配合得很好),您可以使用表格文件(csv) ,标准存储数据格式(json)或序列化Python对象(pickle)。所有这些都已内置到Python