我试图从函数外部访问变量。我添加了global sayac
和global sayi
(从其他相关问题中看到),但我仍然无法访问它们。以下是我在课程中遇到的问题:
def guesss(self):
global tahmin
global sayac
tahmin=self.tahminn.text()
sayac=sayac +1
tahmin = int(tahmin)
if tahmin==sayi:
self.durum.setText ("Tahmininiz doğru!")
QtGui.QMessageBox.warning(None,"Tahmininiz doğru","Doğru sayıyı ",sayac," denemede buldunuz!")
self.tahminett.setEnabled(False)
self.tahminn.setEnabled(False)
self.ybaslatt.show()
elif tahmin>sayi:
self.durum.setText("Tahmininiz doğru sayıdan büyük.")
elif tahmin<sayi:
self.durum.setText("Tahmininiz doğru sayıdan küçük.")
else:
QtGui.QMessageBox.warning(None,"Geçersiz sayı","Sadece 1 ile 100 arasında bir sayı girebilirsiniz.")
完整程序:
^{pr2}$
当问一个问题时,把问题本身包括进来通常是一种好的形式,同时也表明了事情的出乎意料的表现,以及预期的结果。在
关于
global
要记住的主要一点是它不创建变量。它只通知编译器这些名称属于外部作用域(模块级而不是函数级)。因此,组合如下:要求
sayac
已经设置为可以添加的内容。实际上,代码没有设置它们的初始值。在此外,
^{pr2}$baslat_btn
似乎至少存在两个问题:首先,在这个函数中没有
global
语句。因此,这两个变量的作用域是局部的。其次,该函数只能返回一次,因此将只返回sayi
,尽管这个返回值似乎无论如何都没有使用。在最后,为什么要使用全局范围?似乎所有的逻辑都包含在一个
Ui_MainWindow
对象中;没有理由它不能保持状态。考虑到它与主窗口的关系有多紧密,一些编码风格会使它成为QMainWindow的子类。在我建议在声明变量的位置和使用变量之前尝试使用global关键字。每当我在使用全局变量时,我都会这样做。在
相关问题 更多 >
编程相关推荐