游戏重启 PyQT4 Python
Game restart PyQT4 Python
我已经使用 PyQT4 完成了简单的 Hangman 游戏。但是我在创建 restart() 方法时遇到了麻烦。
我试过了:
class Ui_MainWindow(QtGui.QMainWindow):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(1188, 696)
MainWindow.setStyleSheet(_fromUtf8("background-color: black;"))
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
self.buttons = []
self.setUpKeyboard()
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1188, 25))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
MainWindow.setStatusBar(self.statusbar)
self.pic = QtGui.QLabel(self.mainwindow)
self.pic.setPixmap(QtGui.QPixmap(os.getcwd() + "/img/s0.jpg"))
self.pic.setGeometry(50, 150, 450, 280)
self.pic.setObjectName(_fromUtf8("pic"))
....
def restartGame(self):
self.wordLabel.setText(" ")
for i in range(26):
self.buttons[i].setParent(None)
self.counterLabel.setParent(None)
self.keyWordHidden = ""
self.keyWord = ""
self.pic.setParent(None)
self.setupUi(self.centralwidget)
换句话说,我正在删除创建的每个对象。我以某种方式得到输出:
MainWindow.setCentralWidget(self.centralwidget)
AttributeError: 'QWidget' object has no attribute 'setCentralWidget'
我运行不知道当我想第二次调用我的 setUpUi() 时我需要将什么作为参数传递...
还有一个问题。我的重启工作几乎正常。但是我遇到了另一个问题。包含图形元素的像素图(挂机逐个构建元素 - 10 个 jpg 文件,如 img1、img2...)。
对于第一个游戏,它运行良好。在 9 个错误之后,整个 UI 应该重新构建......但是像素图没有出现......我试图删除
self.pic.setParent(None)
然后再次将 "img10.jpg" 切换为 "img1.jpg"。但这于事无补。
您在主 window 上创建的中央小部件显然不是主 window,它是 window 上的一个小部件。所以当然尝试将它用作 MainWindow
是行不通的。
如果您想重复使用同一个主 window,您需要保留它以便重复使用。可能有更好的地方可以做到这一点——如果没有任何相关代码,很难看出你是如何使用这个 class 的——但是一件显而易见的事情就是将它存储在 setupUI
中:
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(1188, 696)
self.mainwindow = MainWindow
# …
… 然后您可以重复使用它:
def restartGame(self):
# …
self.setupUi(self.mainwindow)
我已经使用 PyQT4 完成了简单的 Hangman 游戏。但是我在创建 restart() 方法时遇到了麻烦。
我试过了:
class Ui_MainWindow(QtGui.QMainWindow):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(1188, 696)
MainWindow.setStyleSheet(_fromUtf8("background-color: black;"))
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
self.buttons = []
self.setUpKeyboard()
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1188, 25))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
MainWindow.setStatusBar(self.statusbar)
self.pic = QtGui.QLabel(self.mainwindow)
self.pic.setPixmap(QtGui.QPixmap(os.getcwd() + "/img/s0.jpg"))
self.pic.setGeometry(50, 150, 450, 280)
self.pic.setObjectName(_fromUtf8("pic"))
....
def restartGame(self):
self.wordLabel.setText(" ")
for i in range(26):
self.buttons[i].setParent(None)
self.counterLabel.setParent(None)
self.keyWordHidden = ""
self.keyWord = ""
self.pic.setParent(None)
self.setupUi(self.centralwidget)
换句话说,我正在删除创建的每个对象。我以某种方式得到输出:
MainWindow.setCentralWidget(self.centralwidget)
AttributeError: 'QWidget' object has no attribute 'setCentralWidget'
我运行不知道当我想第二次调用我的 setUpUi() 时我需要将什么作为参数传递...
还有一个问题。我的重启工作几乎正常。但是我遇到了另一个问题。包含图形元素的像素图(挂机逐个构建元素 - 10 个 jpg 文件,如 img1、img2...)。 对于第一个游戏,它运行良好。在 9 个错误之后,整个 UI 应该重新构建......但是像素图没有出现......我试图删除
self.pic.setParent(None)
然后再次将 "img10.jpg" 切换为 "img1.jpg"。但这于事无补。
您在主 window 上创建的中央小部件显然不是主 window,它是 window 上的一个小部件。所以当然尝试将它用作 MainWindow
是行不通的。
如果您想重复使用同一个主 window,您需要保留它以便重复使用。可能有更好的地方可以做到这一点——如果没有任何相关代码,很难看出你是如何使用这个 class 的——但是一件显而易见的事情就是将它存储在 setupUI
中:
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(1188, 696)
self.mainwindow = MainWindow
# …
… 然后您可以重复使用它:
def restartGame(self):
# …
self.setupUi(self.mainwindow)