문제
나는 아직도 Python과 Pyqt4를 배우고 있습니다. "Harvest"버튼을 누르면 GUI 창에 아무것도 표시 할 수없는 것 같습니다. 나는 신호와 슬롯에 대한 지식 부족을 대담하게 강조했다.
업데이트 된 코드 :
import sys, random, sqlite3, os
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import QtGui, QtCore
from geodesic import Ui_MainWindow
class gameWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(gameWindow, self).__init__(parent)
QtGui.QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
buttonHarvest = QPushButton("Harvest") #Create the harvest button - but QT Designer made it?
buttonMining = QPushButton("Mining") # Create the mining button - but QT Designer made it?
self.label = QLabel("Example") # Set the empty label that's not showing
self.connect(buttonHarvest, SIGNAL("clicked()"), self.skillHarvest) #Gets from def skillHarvest
self.setWindowTitle("Geodesic")
# Next -------------------------------------------------------------------------------------
self.connect(buttonMining, SIGNAL("clicked()"), self.skillMining) #Gets from def skillMining
def skillHarvest(self):
harvest = "You find some roots."
self.label.setText(harvest)
def skillMining(self):
mining = "You found some gold."
self.label.setText(mining)
app = QApplication(sys.argv)
showWindow = gameWindow()
showWindow.show()
app.exec_()
해결책 2
해결 :
import sys, random, sqlite3, os
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import QtGui, QtCore
from geodesic import Ui_MainWindow
class gameWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(gameWindow, self).__init__(parent)
QtGui.QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
buttonHarvest = self.ui.buttonHarvest
buttonMining = self.ui.buttonMining
#showLabel = self.ui.label
self.connect(buttonHarvest, SIGNAL("clicked()"), self.onButtonHarvest)
# Next
self.connect(buttonMining, SIGNAL("clicked()"), self.onButtonMining)
def onButtonHarvest(self):
harvest = "You find some roots."
showLabel = self.ui.label
showLabel.setText(harvest)
def onButtonMining(self):
mining = "You found some gold."
showLabel = self.ui.label
showLabel.setText(mining)
app = QApplication(sys.argv)
showWindow = gameWindow()
showWindow.show()
app.exec_()
다른 팁
"One"방법에 대한 정의가 심하게 들여 쓰기 된 것 같습니다.
샘플에서 TestApp의 하위 기능으로 선언되었습니다.이니(), 그래서 외부에서 당신은 하나를 호출 할 수 없습니다 (). 클래스 테스트 app의 방법으로 만들기 위해 One ()의 정의를 끝내지 마십시오.
참조를 위해, 신호를 슬롯에 연결하기 위해 더 "pythonic"양식을 사용할 수 있습니다.
buttonHarvest.clicked.connect(self.onButtonHarvest)
buttonMining.clicked.connect(self.onButtonMining)
그것은 다음과 같이 간다 :
widget.signal.connect(slot)
더 많은 정보를 찾을 수 있습니다 여기
제휴하지 않습니다 StackOverflow