Вопрос
Я все еще изучаю Python и PyQt4, кажется, я просто не могу заставить что-либо отображаться в моем окне графического интерфейса при нажатии кнопки "Урожай".Я выделил жирным шрифтом свое незнание сигналов и слотов.
Обновленный Код:
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_()
Другие советы
мне кажется, что определение метода "один" плохо с отступом.
в вашем образце он был объявлен как подфункция TestApp. init (), поэтому извне вы не можете вызвать one (). попытайтесь отменить определение one (), чтобы сделать его методом класса TestApp.
Просто для справки, для подключения сигналов к слотам вы можете использовать более " pythonic " форма: р>
buttonHarvest.clicked.connect(self.onButtonHarvest)
buttonMining.clicked.connect(self.onButtonMining)
Это выглядит так:
widget.signal.connect(slot)
Вы можете найти более подробную информацию здесь а> р>
Не связан с StackOverflow