擅长:python、mysql、java
<p>只要您使用Python,就可以在局部作用域上声明变量时使用<code>global</code>关键字。使用它将使变量变为全局变量,代码如下所示:</p>
<pre><code>def pdf_btnClicked():
global PDFFILE
PathOfPDF = askopenfile()
PDFFILE = PathOfPDF.name
print(PDFFILE)
book = open(PDFFILE, 'rb')
</code></pre>
<p>查看代码,我们可以推断您的问题与变量范围的概念有关</p>
<p>任何编程中的作用域都是程序的一个区域,在该区域中,定义的变量可以存在,超过该变量则无法访问。基本上,就其范围而言,有两种类型的变量:</p>
<ol>
<li>在称为<strong>局部变量的函数或块内部</li>
</ol>
<p>在这种情况下,如果在函数内部声明变量,则无法在该函数外部使用它。这正是您的情况:您在<code>pdf_btnClicked</code>函数中声明了变量<code>PDFFILE </code>,因此您只能使用该函数中的变量。但即便如此,您还是在调用它之外的变量。您的问题的一个基本解决方案是将<code>PDFFILE </code>设置为全局变量,其解释如下</p>
<ol start=“2”>
<li>在所有称为<strong>全局变量的函数之外</strong></li>
</ol>
<p>顾名思义,全局变量是全局变量,可以被所有函数访问。如果您在函数外部(以及之前)声明<code>PDFFILE </code>,您的问题将得到解决</p>
<p>Obs.:这里我们看到了变量作用域的两种基本类型,但根据编程语言的不同,变量的作用域可能不止两种</p>
<p>字体:<a href="https://www.tutorialspoint.com/cprogramming/c_scope_rules.htm" rel="nofollow noreferrer">https://www.tutorialspoint.com/cprogramming/c_scope_rules.htm</a>
<a href="https://www.w3schools.com/python/python_scope.asp" rel="nofollow noreferrer">https://www.w3schools.com/python/python_scope.asp</a></p>