繁体   English   中英

tkinter 输入框 - 可选输入

[英]tkinter entry boxes - optional input

我的 gui 中有四个输入框,无论我在其中输入什么信息, .get() 都可以正常工作。 问题在下面的条件下进一步开始。 这些输入框的原因是过滤了一个 dataframe

第一个条件在 OR (|) 中有几个条件。 这些条件被打包为“conditionORall”,其他条件同时具有一个条件。 目标是根据用户输入过滤 dataframe。 使用此代码,这仅在我填写所有四个输入框时才有效,因为条件是 (&)。 例如,我希望能够搜索 20220101 结束日期之前的所有数据。结果应该是给定日期的所有数据,而无需输入更多框。 现在,如果我将一个输入框留空,它会导致一张空白表。

有没有办法以某种方式将这些输入框设置为 default=True 以便在留空时考虑所有信息? 例如,我还尝试使用 (len(condition6) > 0 来动态创建最终条件。但它只是没有用。这可能是一个非常简单的问题,但在过去的 6 小时内我无法弄清楚。谢谢你为你提供帮助。


namesec = namesec_execII.get().strip()
symbol = namesec_execII.get().strip()
start = start_execII.get().strip()
end = end_execII.get().strip()
segment = segment_execII.get().strip()



inputfile = 'testfile.pkl'
df = pd.read_pickle(inputfile)
 


conditionORall = ((df['namesec'] == namesec) | (df['localMnemonic'] == symbol) | (df['securityShortName'].str.contains(symbol)))
condition6 = (df['SegmentID'] == segment)
condition7 = (df['TradeDate'] >= start)
condition8 = (df['TradeDate'] <= end)



df = df.loc[(conditionORall) & (condition6) & (condition7) & (condition8)]        

df.to_excel('result.xlsx', index=False)




namesec_execII=StringVar()
namesec_entry_execII = Entry(my_frame10,textvariable = namesec_execII, bg='white', font=('Helvetica',12, 'normal'))

start_execII=StringVar()
start_entry = Entry(my_frame10,textvariable = start_execII, bg='white', font=('Helvetica',12, 'normal'))

end_execII=StringVar()
end_entry = Entry(my_frame10,textvariable = end_execII, bg='white', font=('Helvetica',12, 'normal'))

segment_execII=StringVar()
segment_entry = Entry(my_frame10,textvariable = segment_execII, bg='white', font=('Helvetica',12, 'normal'))

如果你想让一个过滤器可选,你可以考虑默认返回值为True ,除非过滤器是非空的 这可以通过以下方式完成:

conditionORall = ((df['namesec'] == namesec) | (df['localMnemonic'] == symbol) | (df['securityShortName'].str.contains(symbol)))
condition6 = (df['SegmentID'] == segment) if segment != "" else True
condition7 = (df['TradeDate'] >= start) if start != "" else True
condition8 = (df['TradeDate'] <= end) if end != "" else True

df = df.loc[(conditionORall) & (condition6) & (condition7) & (condition8)] 

您可以使用相同的方法在将来添加更多可选过滤器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM