سؤال
ما زلت تعلم بايثون و 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.الحرف الأول() ، حتى من خارج لا يمكنك استدعاء واحد().محاولة إزاحة تعريف واحد() لجعلها وسيلة من الدرجة TestApp.
فقط للإشارة ، للاتصال من إشارات إلى فتحات يمكن استخدام أكثر "pythonic" النموذج:
buttonHarvest.clicked.connect(self.onButtonHarvest)
buttonMining.clicked.connect(self.onButtonMining)
وغني عن مثل هذا:
widget.signal.connect(slot)
يمكنك العثور على مزيد من المعلومات هنا
لا تنتمي إلى StackOverflow