[我是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)
[“ def printing_journal_citation(self)”方法中的“ elif”之前添加空格以消除缩进错误。要检查长度,您可以尝试使用:
if len(str(pn)) > 3: