PyQt4中的多个类
我刚学完Python的基础,现在想用PyQt4来做图形界面。不过我现在遇到麻烦了,不知道怎么用多个类。我花了很多时间在网上找答案,但始终没找到合适的,所以希望你们能帮帮我。
这是我的示例代码:
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.b1 = QtGui.QPushButton("Button", self)
self.b1.move(100,100)
self.setGeometry(300,300,200,200)
self.setWindowTitle("Example")
self.show()
class Bar(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.initUI()
def initUI(self):
self.statusBar().showMessage("Statusbar")
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec())
if __name__ == "__main__":
main()
现在只有“Example”类里的按钮显示出来,而“Bar”类里的状态栏却没有。那么我该怎么才能同时使用这两个类呢?是不是一个类需要从另一个类继承什么东西?抱歉如果我说得很笨,可能还有很多错误,但如果你能帮我,我会非常感谢!
2 个回答
0
QMainWindow 是一个包含多个 QWidgets(小部件)和一个 QStatusBar(状态栏)的窗口,而 QWidget(小部件)本身是没有状态栏的。你需要调整一下你的继承结构。
import sys
from PyQt4 import QtCore, QtGui
class Example(QtGui.QMainWindow):
def __init__(self, parent=None):
super(Example, self).__init__(parent)
self.statusBar().showMessage("howdy stackoverflowers!!")
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
5
你需要创建一个 Bar
对象,并调用它的 show
方法:
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
bar = Bar()
bar.show()
sys.exit(app.exec_())
如果你想把按钮和状态栏放在一个窗口里,就把所有的控件放进 QMainWindow
里:
import sys
from PyQt4 import QtGui, QtCore
class Bar(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.initUI()
def initUI(self):
self.setGeometry(300,300,200,200)
self.b1 = QtGui.QPushButton("Button", self)
self.b1.move(100,100)
self.setWindowTitle("Example")
self.statusBar().showMessage("Statusbar")
def main():
app = QtGui.QApplication(sys.argv)
bar = Bar()
bar.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()