在函数内改变全局变量

2024-10-01 07:10:59 发布

您现在位置:Python中文网/ 问答频道 /正文

背景: 我的目标是制作一个计时器来跟踪和计时下班后发送的页面。我将把原始页面文本粘贴到一个框中,按下一个按钮,它将对此进行解析,以获取票证、标题、分析员及其编号,并启动计时器跟踪何时重新分页/升级。其思想是使用网格和5组变量创建5个可能的行,以便一次将票证信息放入其中,最好只使用一个选择第一个可用行的输入框/按钮组合。你知道吗

我目前一直在研究如何设置字符串变量(甚至访问未分析信息的文本框的内容)来显示将用于按钮按下的函数中的票证信息。当从函数中引用其中一个时,我得到一个未定义的错误,即使在全局声明它们时也是如此(我甚至没有100%地说明它是否与tkinter小部件一起工作以及如何使用.get()?)。你知道吗

我有一种感觉,我可能是在做一些根本错误的事情,但我有一个很大的困难,我的头围绕着我如何才能做到这一点。你知道吗

主应用程序:

from tkinter import *
from newPageEntry import *

#Create window
master = Tk()
master.title('SD Page Time')
master.configure(bg='White')

#Page entry text box setup
newPageTextBox = Entry(master)
newPageTextBox.grid(row=6, column=6)

#page entry button
newPageButton1 = Button(master, text="New Page", width=10, command=newPageEntry(newPageTextBox.get())).grid(row=6, column=7)

#Grid Variables Setup
ticketNumberString1 = StringVar()
analystNameString1 = StringVar()
analystPhoneString1 = StringVar()
ticketTitleString1 = StringVar()

ticketNumberString2 = StringVar()
analystNameString2 = StringVar()
analystPhoneString2 = StringVar()
ticketTitleString2 = StringVar()

ticketNumberString3 = StringVar()
analystNameString3 = StringVar()
analystPhoneString3 = StringVar()
ticketTitleString3 = StringVar()

ticketNumberString4 = StringVar()
analystNameString4 = StringVar()
analystPhoneString4 = StringVar()
ticketTitleString4 = StringVar()

ticketNumberString5 = StringVar()
analystNameString5 = StringVar()
analystPhoneString5 = StringVar()
ticketTitleString5 = StringVar()

新建页面模块:

from telalertParse import *
# import timer once made

#gets telalert page raw text from text box, enters it into parser. 
#inserts [ticketNumber, analystName, analystNumber, title] into the first available row, clears box
def newPageEntry(telalertPage):
    global newPageTextBox
    newPageTextBox.delete(0, END)
    telalertParseReturn = telalertParse(telalertPage)

    ticketNumber = telalertParseReturn[0]
    analystName = telalertParseReturn[1]
    analystNumber = telalertParseReturn[2]
    title = telalertParseReturn[3]

    if ticketNumberString1.get() != '':
        ticketNumberString1.set(ticketNumber)
        analystNameString1.set(analystName)
        analystPhoneString1.set(analystNumber)
        ticketTitleString1.set(title)
        #Start Timer

    elif ticketNumberString2.get() != '':
        ticketNumberString2.set(ticketNumber)
        analystNameString2.set(analystName)
        analystPhoneString2.set(analystNumber)
        ticketTitleString2.set(title)
        #Start Timer

    elif ticketNumberString3.get() != '':
        ticketNumberString3.set(ticketNumber)
        analystNameString3.set(analystName)
        analystPhoneString3.set(analystNumber)
        ticketTitleString3.set(title)
        #Start Timer

    elif ticketNumberString4.get() != '':
        ticketNumberString4.set(ticketNumber)
        analystNameString4.set(analystName)
        analystPhoneString4.set(analystNumber)
        ticketTitleString4.set(title)
        #Start Timer

    elif ticketNumberString5.get() != '':
        ticketNumberString5.set(ticketNumber)
        analystNameString5.set(analystName)
        analystPhoneString5.set(analystNumber)
        ticketTitleString5.set(title)
        #Start Timer
    else:
        print('Too Many Pages!')

Tags: textfromimportmastergettitlestarttimer