在学习了Python基础知识之后,我现在正在使用PyQt4在GUI中尝试自己。不幸的是,我现在很难搞清楚如何使用多个课程,并且花了很多时间尝试在线获得答案,而不是真正找到正确的答案,我希望你现在可以帮助我。
所以这是我的示例代码:
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()
现在只有“示例”类中的按钮显示但不显示“Bar”类中的statusBar。那么我怎么能同时使用这两个类呢?一个人是否必须继承另一个人的东西?对不起,如果这可能非常笨拙并且有很多错误,但谢谢你能帮助我!
答案 0 :(得分: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()
答案 1 :(得分:0)
QMainWindow有QWidgets和一个QStatusBar,QWidget没有QStatusBar。您需要修复继承树。
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_())