gpt4 book ai didi

python - 具有状态栏和菜单栏的 PyQt QWidget

转载 作者:太空狗 更新时间:2023-10-30 02:41:47 24 4
gpt4 key购买 nike


我正在尝试创建一个 PyQt 应用程序,该应用程序在窗口中具有状态栏和菜单栏以及其他小部件。下面是我设法让它运行类 QtGui.QMainWindow 方法的代码。但是当我打算添加更多功能时,我意识到我必须改用 QtGui.QWidget

代码如下:

import sys
from PyQt4 import QtGui, QtCore

### How can I use QtGui.QWidget here??? ###

class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
self.initUI()

def initUI(self):

QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10))
self.setToolTip('This is a <b>QWidget</b> Window widget')

exitAction = QtGui.QAction(QtGui.QIcon('exit-icon-2.png'), '&Exit', self)

exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit/Terminate application')

exitAction.triggered.connect(QtGui.qApp.quit)

self.statusBar()

menubar = self.menuBar()
menubar.setToolTip('This is a <b>QWidget</b> for MenuBar')

fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
toolbar = self.addToolBar('Exit')
toolbar.addAction(exitAction)

qbtn = QtGui.QPushButton('Quit', self)

qbtn.setToolTip('This is a <b>QPushButton</b> widget')
qbtn.clicked.connect(self.launchAAA)
qbtn.resize(qbtn.sizeHint())
qbtn.move(170, 190)



self.setGeometry(500, 180, 400, 400)
self.setWindowTitle('Quit button with Message')
self.show()

def launchAAA(self, event):

reply = QtGui.QMessageBox.question(self, 'Message',
"Are you sure to quit?", QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No, QtGui.QMessageBox.No)

if reply == QtGui.QMessageBox.Yes:
QtGui.QApplication.quit()
else:
pass


def main():

app = QtGui.QApplication(sys.argv)
ex=Example()

sys.exit(app.exec_())


if __name__ == '__main__':
main()

我的印象是可以使用 QWidget 方法创建菜单栏和标题栏,但在这里不起作用。我打算使用 QtGui.QLCDNumber 向应用程序添加 LCD 功能。

关于如何解决上述问题的任何建议。谢谢

最佳答案

你可以移动你的按钮/标签/等等。到 QWidget,并将此小部件添加到主窗口。这是它的样子(我更改了导入以使其更具可读性)。

您的内容小部件类:

class ExampleContent(QWidget):
def __init__(self, parent):
QWidget.__init__(self, parent)
self.initUI()

def initUI(self):
qbtn = QPushButton('Quit', self)
qbtn.setToolTip('This is a <b>QPushButton</b> widget')
qbtn.clicked.connect(self.launchAAA)
qbtn.resize(qbtn.sizeHint())
qbtn.move(170, 190)

def launchAAA(self):
reply = QMessageBox.question(self, 'Message',
"Are you sure to quit?", QMessageBox.Yes |
QMessageBox.No, QMessageBox.No)

if reply == QMessageBox.Yes:
QApplication.quit()
else:
pass

将它添加到主窗口:

class Example(QMainWindow):                                  
def __init__(self):
super(Example, self).__init__()
self.initUI()

def initUI(self):
QToolTip.setFont(QFont('SansSerif', 10))
self.setToolTip('This is a <b>QWidget</b> Window widget')

exitAction = QAction(QIcon('exit-icon-2.png'), '&Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit/Terminate application')
exitAction.triggered.connect(qApp.quit)

self.statusBar()

menubar = self.menuBar()
menubar.setToolTip('This is a <b>QWidget</b> for MenuBar')

fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
toolbar = self.addToolBar('Exit')
toolbar.addAction(exitAction)

# create the widget here
content = ExampleContent(self)
self.setCentralWidget(content)

self.setGeometry(500, 180, 400, 400)
self.setWindowTitle('Quit button with Message')
self.show()

除了中间有一个 QWidget 而不是 QMainWindow 之外,一切都像以前一样工作。希望对您有所帮助!

关于python - 具有状态栏和菜单栏的 PyQt QWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38322349/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com