【发布时间】:2017-09-13 06:03:02
【问题描述】:
我正在使用 tkinter 设计一个 GUI,用户将在其中输入特定信息,单击“创建”按钮后,该信息将按特定顺序排列,输出将以文本形式显示给用户盒子。我遇到的问题是“创建”功能的设计。我相信我必须使用多个 If 语句才能完成此操作,但我在文本框中得到的输出是“tcpdump -i eth1 None host 9.9.9.9NoneNone”。显然,我不希望包含“无”,我该如何纠正这个?下面是我的“创建”函数。
谢谢,
def create(self):
data = "tcpdump "
data += "-i " + self.int_entry.get() + " "
if self.anyInt.get():
data += "any "
if self.src_entry.get() and not self.srcIP.get():
data += "host " + self.src_entry.get() + " "
elif self.src_entry.get() and self.srcIP.get():
data += "src " + self.src_entry.get()
data += self.AndOr.get() + " "
if self.notDst.get():
data += "not "
if self.dst_entry.get() and not self.dstIP.get():
data += "host " + self.dst_entry.get()
elif self.dst_entry.get() and self.dstIP.get():
data += "dst" + " " + self.dst_entry.get()
data += self.AndOrport.get()
if self.notSrcPort.get():
data += "not "
if self.srcport_entry.get():
data += "src port " + self.srcport_entry.get() + " "
data += self.SrcDstport.get()
if self.notDstPort.get():
data += "not "
if self.dstport_entry.get():
data += "dst port " + self.dstport_entry.get()
self.filterData.delete(0.0, END)
self.filterData.insert(0.0, data)
def main():
root = Tk()
app = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
【问题讨论】:
-
您确实需要限制您发布的代码量。这是太多的代码,无法期望我们去挖掘。您需要进行调试以缩小代码范围,并发布一个重现问题的较小示例。
-
明白,谢谢。
-
我认为您错过了@Carcigenicate 评论中的“发布一个重现问题的较小示例”部分,您只裁剪了您的代码,但它不再可重现
-
我只能看到一个函数下有许多
if语句。我认为你不能说if if elif if if elif if if。请使用正确的缩进。 -
你不断得到你的
None,因为像data += self.AndOrport.get()或data += self.SrcDstport.get()这样的行超出了你的if逻辑。所以也将逻辑附加到它们,或者从最终结果中删除None。
标签: python if-statement tkinter