Tkinter 条目是空的,但如果程序说它不是

Tkinter entry is empty but if program says it is not

我正在 Python 中编写与音乐相关的 GUI,但我的脚本中有关曲目的部分无法正常工作。

我有一些曲目发行日期和录制日期的输入框,我想检查它们是否为空。

我的代码如下:

    if self.active_tab == 'Tracks':
        print(f'Release = {self.dateReleaseEntry.get()}, Recording = {self.dateRecordEntry.get()}')
        if self.dateReleaseEntry.get() or self.dateRecordEntry.get() == '':
            print('One of the dates is empty, setting missing date to true.')
            self.missingDate = True
            print(self.missingDate)

    if self.missingDate:
        self.alert_window = Toplevel()
        self.alert_window.title('Alert')
        self.alert_window.geometry('200x100+0+0')

第一个打印语句的结果是“Release = , Recording = 2007-05-22 14:00:00”。这告诉我 'self.dateReleaseEntry.get()' 的值是 '' 或者换句话说,一个空字符串。然而,第二个 print 语句从未被调用,告诉我程序不同意我。

我试过其他检测entry是否为空的方法(比如len(entry) == 0 and entry == 'None'/None)。不幸的是我没有运气。有人可以告诉我是 tkinter 还是我愚蠢吗(老实说,我不介意)。

谢谢, J

您似乎只是错过了检查它是否为空字符串的检查,self.dateReleaseEntry.get() == ''。空字符串在 Python 中被视为 False。这就是为什么原始代码不起作用的原因。

if self.active_tab == 'Tracks':
    print(f'Release = {self.dateReleaseEntry.get()}, Recording = {self.dateRecordEntry.get()}')
    if self.dateReleaseEntry.get() == '' or self.dateRecordEntry.get() == '':
        print('One of the dates is empty, setting missing date to true.')
        self.missingDate = True
        print(self.missingDate)

我不知道情况是否如此,但一个常见的误解是行 if self.dateReleaseEntry.get() or self.dateRecordEntry.get() == '' 将检查这些值中的任何一个是否为空字符串。