Question:
I'd like a MessageBox to display when I click a button on my simple PyQT application. How can I declare two textboxes and have a MessageBox display with the text from both textboxes?
Here's my code far:
import sys
from PyQt4 import QtGui, QtCore
class myWindow(QtGui.QWidget):
def init(self, parent=None):
QtGui.QWidget.init(self, parent)
#The setGeometry method is used to position the control.
#Order: X, Y position - Width, Height of control.
self.setGeometry(300, 300, 500, 350)
self.setWindowTitle("Sergio's QT Application.")
self.setWindowIcon(QtGui.QIcon('menuScreenFolderShadow.png'))
self.setToolTip('<i>Welcome</i> to the <b>first</b> app ever!')
QtGui.QToolTip.setFont(QtGui.QFont('Helvetica', 12))
txtFirstName = QtGui.?
txtLastName = QtGui.?
btnQuit = QtGui.QPushButton('Exit Application', self)
btnQuit.setGeometry(340, 300, 150, 35)
self.connect(btnQuit, QtCore.SIGNAL('clicked()'),
QtGui.qApp, QtCore.SLOT('quit()'))
app = QtGui.QApplication(sys.argv)
mainForm = myWindow()
mainForm.show()
sys.exit(app.exec_())
Solution 1:
Since such simple code is a common request, I decided to hack something basic together, here you go:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class AppForm(QMainWindow):
def init(self, parent=None):
QMainWindow.init(self, parent)
self.create_main_frame()
def create_main_frame(self):
page = QWidget()
self.button = QPushButton('joy', page)
self.edit1 = QLineEdit()
self.edit2 = QLineEdit()
vbox1 = QVBoxLayout()
vbox1.addWidget(self.edit1)
vbox1.addWidget(self.edit2)
vbox1.addWidget(self.button)
page.setLayout(vbox1)
self.setCentralWidget(page)
self.connect(self.button, SIGNAL("clicked()"), self.clicked)
def clicked(self):
QMessageBox.about(self, "My message box", "Text1 = %s, Text2 = %s" % (
self.edit1.text(), self.edit2.text()))
if name == "main":
import sys
app = QApplication(sys.argv)
form = AppForm()
form.show()
app.exec_()
Write something into the line edits (text boxes), click the button. Profit! :-)
Note: it can be done with less code, but this is a good PyQt coding practice - create a widget to serve as a central widget of a window, populate it with a layout, etc.
Solution 2:
PyQt comes with examples when you install it. These examples contain a lot of very useful code and you can learn from them, as well as take whole code chunks and use them.
Check out, for example, the "Address book" example which pops message boxes along other things (search its sources for "messagebox").
Solution 3:
enter image description here
from PyQt4 import QtGui, QtCore
class Window( QtGui.QWidget ):
def __init__( self ):
QtGui.QWidget.__init__( self )
msgBox = QtGui.QMessageBox( self )
msgBox.setIcon( QtGui.QMessageBox.Information )
msgBox.setText( "Do not stare into laser with remaining eye" )
msgBox.setInformativeText( "Do you really want to disable safety enforcement?" )
msgBox.addButton( QtGui.QMessageBox.Yes )
msgBox.addButton( QtGui.QMessageBox.No )
msgBox.setDefaultButton( QtGui.QMessageBox.No )
ret = msgBox.exec_()
if ret == QtGui.QMessageBox.Yes:
print( "Yes" )
return
else:
print( "No" )
return
if name == 'main':
import sys
app = QtGui.QApplication( sys.argv )
window = Window()
# window.show()
sys.exit( app.exec_() )
Source:
https://pythonhowto.org/howto/22358/python---How-to-display-a-message-box-on-PyQT4?
pythonhowto
Top comments (0)