您如何在Tkinter中适当缩进StringVar()以便将其与类同化?

问题描述 投票:0回答:1

[我是Python和Tkinter的专业爱好者,目前正在与Tkinter一起为报纸制作APA引用机。

问题是,我正在尝试创建一种条件,如果用户输入页面范围(即5-7、4-9),程序将在“ pp”处显示引用。会在页面范围之前添加(即第5-7页,第4-9页)。默认情况下,该程序只会添加“ p”。

我当前的解决方案是添加len函数,在该函数中将检查用户输入的页面范围的字符数,以查看其是否超过两个字符(页面范围始终至少为三个字符)。

self.i_page_number_journal =条目(journaltab,textvar = pn)

在这行代码中,我编写了textvar = pn(pn =页码),然后编写了pn = StringVar()将其标记为字符串,该字符串的字符可以由len函数计算。

elif self.author_number_journal == 1且len(pn)> 3:

此代码应在后面加上“ pp”。引文一旦满意

但是,运行代码后遇到的错误是:

Traceback(最近通话):文件“ C:/ Users / Ex_ME / PycharmProjects / untitled1 / BACS MOther File.py”,第5行,在从报纸_引文_函数导入APANewspaperCitation文件“ C:\ Users \ Ex_ME \ PycharmProjects \ untitled1 \ newspaper_citation_functions.py”,第6行def __init __(self,journaltab):^IndentationError:unindent与任何外部缩进级别都不匹配

[此外,我一直收到消息:预期类型为'Sized',取而代之的是'StringVar'。

我尝试将pn = StringVar()移到我可能想到的所有可能位置,但无济于事。从那时起,我开始怀疑它是否甚至可以与类一起集成。

因此本质上是:1.)pn = StringVar()应该放在哪里?2.)“预期类型为'Sized',取而代之为'StringVar'”是什么意思?

谢谢

from tkinter import *

pn = StringVar()
class APANewspaperCitation:
    def __init__(self, journaltab):
        self.author_number_journal = 1

        self.last_name_journal = Label(journaltab, text="Last Name/Surname:")
        self.last_name_journal.grid(row=0, column=0)
        self.i_last_name_journal = Entry(journaltab)
        self.i_last_name_journal.grid(row=1, column=0)

        self.first_name_journal = Label(journaltab, text="First Name:")
        self.first_name_journal.grid(row=0, column=1)
        self.i_first_name_journal = Entry(journaltab)
        self.i_first_name_journal.grid(row=1, column=1, padx=10)

        self.middle_initial_journal = Label(journaltab, text="Middle Initial/Name:")
        self.middle_initial_journal.grid(row=0, column=2)
        self.i_middle_initial_journal = Entry(journaltab)
        self.i_middle_initial_journal.grid(row=1, column=2)

        self.month_journal = Label(journaltab, text="Month:")
        self.month_journal.grid(row=10, column=0)
        self.i_month_journal = Entry(journaltab)
        self.i_month_journal.grid(row=11, column=0, pady=5)

        self.date_journal = Label(journaltab, text="Date:")
        self.date_journal.grid(row=10, column=1)
        self.i_date_journal = Entry(journaltab)
        self.i_date_journal.grid(row=11, column=1, pady=5)

        self.year_journal = Label(journaltab, text="Year of Publication:")
        self.year_journal.grid(row=10, column=2, pady=5)
        self.i_year_journal = Entry(journaltab)
        self.i_year_journal.grid(row=11, column=2, pady=5)

        self.article_title_journal = Label(journaltab, text="Title of Article:")
        self.article_title_journal.grid(row=13, column=1)
        self.i_article_title_journal = Entry(journaltab)
        self.i_article_title_journal.grid(row=14, column=1, pady=5)

        self.periodical_title_journal = Label(journaltab, text="Title of Newspaper:")
        self.periodical_title_journal.grid(row=15, column=1)
        self.i_periodical_title_journal = Entry(journaltab)
        self.i_periodical_title_journal.grid(row=16, column=1, pady=5)

        self.page_number_journal = Label(journaltab, text='''Page Number/s:''')
        self.page_number_journal.grid(row=17, column=1)

        self.i_page_number_journal = Entry(journaltab, textvar=pn)
        self.i_page_number_journal.grid(row=18, column=1, pady=5)

        self.i_middle_initial7_journal = Entry(journaltab)
        self.i_first_name7_journal = Entry(journaltab)
        self.i_last_name7_journal = Entry(journaltab)
        self.i_middle_initial6_journal = Entry(journaltab)
        self.i_first_name6_journal = Entry(journaltab)
        self.i_last_name6_journal = Entry(journaltab)
        self.i_middle_initial5_journal = Entry(journaltab)
        self.i_first_name5_journal = Entry(journaltab)
        self.i_last_name5_journal = Entry(journaltab)
        self.i_middle_initial4_journal = Entry(journaltab)
        self.i_first_name4_journal = Entry(journaltab)
        self.i_last_name4_journal = Entry(journaltab)
        self.i_middle_initial3_journal = Entry(journaltab)
        self.i_first_name3_journal = Entry(journaltab)
        self.i_last_name3_journal = Entry(journaltab)
        self.i_middle_initial2_journal = Entry(journaltab)
        self.i_first_name2_journal = Entry(journaltab)
        self.i_last_name2_journal = Entry(journaltab)

        self.doi_link_journal = Label(journaltab, text="D.O.I./Link:")
        self.i_doi_link_journal = Entry(journaltab)

        self.jn = Label(journaltab, text="Citation:")
        self.jn.grid(row=24, column=1)
        self.i_jn = Text(journaltab, height=5, width=50, font="times 12")
        self.i_jn.grid(row=25, column=1, pady=5)

        self.display_output_journal = Button(journaltab, text="Cite!", command=self.printed_journal_citation)
        self.display_output_journal.grid(row=23, column=1, pady=5)

    def printed_journal_citation(self):
        self.i_jn.delete(1.0, END)
        self.i_jn.tag_add("title_italics", "1.0", "1.0 lineend")
        self.i_jn.tag_config("title_italics", font="times 12 italic")
        if self.author_number_journal == 1:
            self.output1 = \
                f"{str(self.i_last_name_journal.get()).capitalize()}, {str(self.i_first_name_journal.get()).capitalize()[:1]}. {str(self.i_middle_initial_journal.get()).capitalize()[:1]}. \
({self.i_year_journal.get()}, {self.i_month_journal.get()} {self.i_date_journal.get()}). \
{self.i_article_title_journal.get()}. "
            self.output2 = f"{self.i_periodical_title_journal.get()},"
            self.output3 = f"p.{self.i_page_number_journal.get()}."
            self.i_jn.insert(INSERT, self.output1)
            self.i_jn.insert(INSERT, self.output2, "title_italics")
            self.i_jn.insert(INSERT, self.output3)

        elif self.author_number_journal == 1 and len(pn) > 3:
            self.output1 = \
                f"{str(self.i_last_name_journal.get()).capitalize()}, {str(self.i_first_name_journal.get()).capitalize()[:1]}. {str(self.i_middle_initial_journal.get()).capitalize()[:1]}. \
({self.i_year_journal.get()}, {self.i_month_journal.get()} {self.i_date_journal.get()}). \
{self.i_article_title_journal.get()}. "
            self.output2 = f"{self.i_periodical_title_journal.get()},"
            self.output3 = f"pp.{self.i_page_number_journal.get()}."
            self.i_jn.insert(INSERT, self.output1)
            self.i_jn.insert(INSERT, self.output2, "title_italics")
            self.i_jn.insert(INSERT, self.output3)
python tkinter
1个回答
0
投票

[“ def printing_journal_citation(self)”方法中的“ elif”之前添加空格以消除缩进错误。要检查长度,您可以尝试使用:

if len(str(pn)) > 3:
© www.soinside.com 2019 - 2024. All rights reserved.