PyQt5 "TypeError: setCentralWidget(self, QWidget): argument 1 has unexpected type 'Shop'" hatası

imoutofmaterial

Hectopat
Katılım
7 Ekim 2020
Mesajlar
27
Evet arkadaşlar kodlarım bunlar:

[CODE lang="python" highlight="173-190"]import sys
from PyQt5 import QtWidgets, QtGui

class Main(QtWidgets.QWidget):

def __init__(self):

super().__init__()

self.init_ui()

def init_ui(self):

self.label = QtWidgets.QLabel("Clicker Simulator")
self.buttonStart = QtWidgets.QPushButton("Start")
self.buttonShop = QtWidgets.QPushButton("Shop")
self.buttonQuit = QtWidgets.QPushButton("Quit")

v_box = QtWidgets.QVBoxLayout()

v_box.addStretch()
v_box.addWidget(self.label)
v_box.addWidget(self.buttonStart)
v_box.addWidget(self.buttonShop)
v_box.addWidget(self.buttonQuit)
v_box.addStretch()

h_box = QtWidgets.QHBoxLayout()

h_box.addStretch()
h_box.addLayout(v_box)
h_box.addStretch()

self.setLayout(h_box)

class Game(QtWidgets.QWidget):

def __init__(self):

super().__init__()

self.init_ui()

def init_ui(self):

self.say = 0
self.credit = 0
self.click1 = False
self.click2 = False
self.click3 = False

self.label = QtWidgets.QLabel("You haven't clicked the button yet!")
self.button = QtWidgets.QPushButton("Click Me :)")
self.labelUnknown = QtWidgets.QLabel("???")

v_box = QtWidgets.QVBoxLayout()

v_box.addStretch()
v_box.addWidget(self.label)
v_box.addWidget(self.button)
v_box.addWidget(self.labelUnknown)
v_box.addStretch()

h_box = QtWidgets.QHBoxLayout()

h_box.addStretch()
h_box.addLayout(v_box)
h_box.addStretch()

self.setLayout(h_box)

from PyQt5 import QtCore, QtGui, QtWidgets

# I used a .ui to .py converter to write this code (Start)

class Shop(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(400, 300)
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(10, 10, 75, 23))
self.pushButton.setObjectName("pushButton")
self.horizontalLayoutWidget = QtWidgets.QWidget(Form)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(20, 190, 351, 80))
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.pushButton_3 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
self.pushButton_3.setObjectName("pushButton_3")
self.horizontalLayout.addWidget(self.pushButton_3)
self.pushButton_4 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
self.pushButton_4.setObjectName("pushButton_4")
self.horizontalLayout.addWidget(self.pushButton_4)
self.pushButton_2 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
self.pushButton_2.setObjectName("pushButton_2")
self.horizontalLayout.addWidget(self.pushButton_2)
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(30, 110, 89, 78))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(140, 140, 101, 21))
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(Form)
self.label_3.setGeometry(QtCore.QRect(260, 140, 111, 20))
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(Form)
self.label_4.setGeometry(QtCore.QRect(320, 0, 81, 20))
self.label_4.setObjectName("label_4")
self.horizontalLayoutWidget_2 = QtWidgets.QWidget(Form)
self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(20, 60, 351, 80))
self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_5 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
self.label_5.setObjectName("label_5")
self.horizontalLayout_3.addWidget(self.label_5)
self.label_6 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
self.label_6.setObjectName("label_6")
self.horizontalLayout_3.addWidget(self.label_6)
self.label_7 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
self.label_7.setObjectName("label_7")
self.horizontalLayout_3.addWidget(self.label_7)
self.horizontalLayout_2.addLayout(self.horizontalLayout_3)

self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)

def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Clicker", "Form"))
self.pushButton.setText(_translate("Form", "Back"))
self.pushButton_3.setText(_translate("Form", "Buy"))
self.pushButton_4.setText(_translate("Form", "Buy"))
self.pushButton_2.setText(_translate("Form", "Buy"))
self.label.setText(_translate("Form", "Extra 1 click"))
self.label_2.setText(_translate("Form", "Extra 100 clicks"))
self.label_3.setText(_translate("Form", "Extra 1000 clicks"))
self.label_4.setText(_translate("Form", "Credits: None"))
self.label_5.setText(_translate("Form", "100 credits"))
self.label_6.setText(_translate("Form", "1000 credits"))
self.label_7.setText(_translate("Form", "10.000 credits"))

# (End)

class MainWindow(QtWidgets.QMainWindow):

def __init__(self):

super().__init__()

self.mainMenu = Main()
self.game = Game()
self.shop = Shop()

self.setCentralWidget(self.mainMenu)

self.setWindowIcon(QtGui.QIcon("clicker icon.png"))
self.setWindowTitle("Clicker.py")
self.show()

self.mainMenu.buttonStart.clicked.connect(self.start)
self.mainMenu.buttonShop.clicked.connect(self.shopFunc)
self.mainMenu.buttonQuit.clicked.connect(self.quit)

def start(self):

self.setCentralWidget(self.game)
self.game.button.clicked.connect(self.clicked)

def shopFunc(self):

self.setCentralWidget(self.shop)

if self.game.credit < 1:

self.label_4.setText("Credits: None")

else:

self.label_4.setText("Credits")

self.shop.pushButton.clicked.connect(self.back)
self.shop.pushButton_3.clicked.connect(self.buy)
self.shop.pushButton_4.clicked.connect(self.buy2)
self.shop.pushButton_2.clicked.connect(self.buy3)

def back(self):

self.setCentralWidget(self.mainMenu)

def buy(self):

self.game.credit -= 100
self.game.click1 = True

def buy2(self):

self.game.credit -= 1000
self.game.click2 = True

def buy3(self):

self.game.credit -= 10000
self.game.click3 = True

def clicked(self):

if self.game.click1 == True:

self.game.say += 2
self.game.credit += 4

elif self.game.click2 == True:

self.game.say += 101
self.game.credit += 202

elif self.game.click3 == True:

self.game.say += 1001
self.game.credit += 2002

else:

self.game.say += 1
self.game.credit += 2

self.game.label.setText("You've clicked the button {} times!".format(self.game.say))

if self.game.say == 100000:

self.game.label.setText("Congratulations! You've clicked the button 100.000 times!")

def quit(self):

self.close()

app = QtWidgets.QApplication(sys.argv)

mainW = MainWindow()

sys.exit(app.exec_())[/CODE]
 
Son düzenleyen: Moderatör:
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı