创建用于数据输入的GUI(Python?)

创建用于数据输入的GUI(Python?),python,user-interface,Python,User Interface,在较高的层次上:我希望使用Python(因为这是我最习惯使用的语言)来创建用于数据输入的GUI,以管理仓库库存。有人有过这样的创作经验吗?Python是创建此工具的好选择吗 更多详细信息:我有包含仓库中产品信息(即sku、数量等)的数据。在第四季度末,仓库工作人员将检查仓库中的每一件物品,并计算仓库中的库存数量,以查看人员数量是否与存档的数量相符。如果档案中的计数与人工计数之间存在任何不匹配,则该项目将移至第二轮计数。如果第二次人工计数与文件上的计数或第一次计数不匹配,则标记为进行最终审查 我已

在较高的层次上:我希望使用Python(因为这是我最习惯使用的语言)来创建用于数据输入的GUI,以管理仓库库存。有人有过这样的创作经验吗?Python是创建此工具的好选择吗

更多详细信息:我有包含仓库中产品信息(即sku、数量等)的数据。在第四季度末,仓库工作人员将检查仓库中的每一件物品,并计算仓库中的库存数量,以查看人员数量是否与存档的数量相符。如果档案中的计数与人工计数之间存在任何不匹配,则该项目将移至第二轮计数。如果第二次人工计数与文件上的计数或第一次计数不匹配,则标记为进行最终审查

我已经编写了一个程序,它可以完成我希望它完成的任务,但是,我刚刚被告知,执行第二次人工计数的员工将在第一次计数仍在进行时执行此操作。这给我当前的程序带来了麻烦,从本质上说,我需要创建一个GUI,它允许用户(即数据输入员工)从数据库中获取数据,对该数据进行更改(即填充“人员计数1”和“人员计数2”列),并让程序立即识别匹配/不匹配。它将基本上充当一个内置公式的谷歌表单

如果有助于澄清我的一些逻辑,我已经在下面包含了项目版本1的一些代码

# create some test data
import pandas as pd

# create dataframe
QUANTITY = [1,1,1,2,2,2,3,3,3]

counted_quantity_1 = [4,1,1,1,1,1,1,1,5]

counted_quantity_2 = [1,2,2,2,2,2,2,2,5]

df = pd.DataFrame({'QUANTITY': QUANTITY,
                   'counted_quantity_1': counted_quantity_1,
                   'counted_quantity_2': counted_quantity_2})
我将其写入excel文件,并将其保存为test_file.xlsx

以下是主_test.py文件:

import pandas as pd

# get user inputs
filename = input("Enter the name of your dataset: ") # this will be test_file
filename_formatted = filename + ".xlsx"
# get the number of counts
num_counts = input("Is this the 1st or 2nd count? (enter 1 or 2): ")
# get the warehouse location
warehouse_loc = input("What is the warehouse location (enter AZ or PA): ")


# import data
df = pd.read_excel(filename_formatted)

# create new files depending on if they are the 1st or 2nd count
if num_counts == '1':      
    # mismatches_1 = 1 if it is a mismatch and 0 if it is not
    df['matches_1'] = df.apply(lambda x: 1 if x['counted_quantity_1'] == x['QUANTITY'] else 0, axis=1)

    # keep only the mismatches
    df_mismatches = df[df['matches_1'] == 0]

    # export as excel file
    df_mismatches.to_excel("mismatches_1_" + warehouse_loc + ".xlsx")
else:
    # get a column to see if any of the three columns match
    df['matches_2'] = df.apply(lambda x: 1 if x['counted_quantity_2'] == x['QUANTITY'] or x['counted_quantity_2'] == x['counted_quantity_1'] else 0, axis=1)

    # keep only the mismatches (i.e., 0)
    df_mismatches = df.loc[df['matches_2'] == 0]

    # export as excel file
    df_mismatches.to_excel("mismatches_2_" + warehouse_loc + ".xlsx")

    # get a column where counted_quantity_1 == counted_quantity_2 but QUANTITY is different
    df['HJ_adjust'] = df.apply(lambda x: 1 if x['counted_quantity_2'] == x['counted_quantity_1'] and x['matches_2'] == 1 else 0, axis=1)

    # keep only those flagged for review
    df_mismatches_HJ_rev = df[df['HJ_adjust'] == 1]

    # create a new column that is count 2 minus QUANTITY
    df_mismatches_HJ_rev['diff_from_HJ'] = df_mismatches_HJ_rev['counted_quantity_2'] - df_mismatches_HJ_rev['QUANTITY']

    # export as excel file
    df_mismatches_HJ_rev.to_excel("HJ_review_" + warehouse_loc + ".xlsx")

Python为编程GUI提供了很多可能性。对于本机GUI(即在Windows/Linux/macOS窗口中显示的GUI),最常用的python包包括、、和。此外还有用于基于web的GUI(即显示在web浏览器中的GUI)的python包,最常用的可能是。甚至在Excel工作簿中实现GUI也是一种可能

每个软件包都有自己的优点和局限性,选择最适合您的应用程序的软件包并不是一件小事(如果您问五个不同的人,您很可能会得到五个不同的答案)


我建议首先通过阅读文档页面中的介绍/教程,粗略了解上述软件包。然后(如果需要)再次回到这里,提出更有针对性的问题。

看看tkinter,看看它是否适合您的用例。谢谢,我对tkinter做了一点修改,它可能会起到作用。我需要打包应用程序,以便在多台没有安装python的计算机(我希望是PC机)上使用。为此,您是否建议使用cx_freeze?谢谢。我在过去有一些使用tkinter的经验,它看起来很简单。将tkinter制作的应用程序分发给未安装python的最终用户的最佳方式是tonise cx_freeze吗?冻结确实是一种可能性。另一个选择是。