함수 외부에서 변수에 액세스하려고합니다. 나는 global sayac
과 global sayi
을 추가했는데 (다른 질문과 관련한 것을 보았습니다.), 여전히 액세스 할 수 없습니다. 저는 여기에 문제가 발생하고있는 프로그램의 일부는 다음과 같습니다Python - 함수 외부에서 변수에 액세스하려면 어떻게해야합니까?
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.")
전체 프로그램 :
import random
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(473, 326)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.baslatt = QtGui.QPushButton(self.centralwidget)
self.baslatt.setGeometry(QtCore.QRect(40, 240, 121, 41))
self.baslatt.setObjectName(_fromUtf8("baslatt"))
self.tahminett = QtGui.QPushButton(self.centralwidget)
self.tahminett.setGeometry(QtCore.QRect(300, 240, 121, 41))
self.tahminett.setObjectName(_fromUtf8("tahminett"))
self.tahminn = QtGui.QLineEdit(self.centralwidget)
self.tahminn.setGeometry(QtCore.QRect(90, 100, 261, 22))
self.tahminn.setObjectName(_fromUtf8("tahminn"))
self.label = QtGui.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(10, 30, 451, 41))
self.label.setObjectName(_fromUtf8("label"))
self.label_2 = QtGui.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(30, 100, 47, 14))
self.label_2.setObjectName(_fromUtf8("label_2"))
self.label_3 = QtGui.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(30, 170, 57, 14))
self.label_3.setObjectName(_fromUtf8("label_3"))
self.durum = QtGui.QLabel(self.centralwidget)
self.durum.setGeometry(QtCore.QRect(90, 170, 241, 16))
self.durum.setText(_fromUtf8(""))
self.durum.setObjectName(_fromUtf8("durum"))
self.hakkinda = QtGui.QPushButton(self.centralwidget)
self.hakkinda.setGeometry(QtCore.QRect(180, 240, 101, 41))
self.hakkinda.setObjectName(_fromUtf8("hakkinda"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 473, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
QtCore.QObject.connect(self.hakkinda, QtCore.SIGNAL(_fromUtf8("clicked()")), self.hakkindamsg)
QtCore.QObject.connect(self.baslatt, QtCore.SIGNAL(_fromUtf8("clicked()")), self.baslat_btn)
QtCore.QObject.connect(self.tahminett, QtCore.SIGNAL(_fromUtf8("clicked()")), self.guesss)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.tahminett.setEnabled(False)
self.tahminn.setEnabled(False)
def hakkindamsg(self):
QtGui.QMessageBox.about(None, "Hakkında", "Ege Öz 2014")
def baslat_btn(self):
sayac=0
self.tahminn.setEnabled(True)
self.tahminett.setEnabled(True)
self.baslatt.setEnabled(False)
sayi=random.randint(0,100)
self.durum.setText("1-100 arası bir sayı girin.")
return sayi
return sayac
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.")
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "Sayıyı Bul", None))
self.baslatt.setText(_translate("MainWindow", "Başlat", None))
self.tahminett.setText(_translate("MainWindow", "Tahmin Et", None))
self.label.setText(_translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-weight:600;\">Python-Sayı Tahmin Oyunu </span></p><p>Başlamak için "Başlat" düğmesine basın ve 1-100 arasında bir sayı girin.</p></body></html>", None))
self.label_2.setText(_translate("MainWindow", "Tahmin:", None))
self.label_3.setText(_translate("MainWindow", "", None))
self.hakkinda.setText(_translate("MainWindow", "Hakkında", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
전역 변수를 사용하여 프로그램을 수정하는 대신, 변수를 전달하고 함수에서 변수를 반환하는 것이 좋습니다. 전역 변수는 위험하며 일반적으로 불분명하고 추악한 비 모듈 코드로 이어집니다. – xander
클래스에서 전역을 사용하는 이유는 무엇입니까? 속성을 만들 수 없습니까? –