Python 如何在 PyQT4 上显示消息框?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4155052/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to display a message box on PyQT4?
提问by
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?
当我单击简单 PyQT 应用程序上的按钮时,我希望显示一个 MessageBox。我怎样才能声明两个文本框并让 MessageBox 显示两个文本框的文本?
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_())
采纳答案by Eli Bendersky
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.
注意:它可以用更少的代码来完成,但这是一个很好的 PyQt 编码实践 - 创建一个小部件作为窗口的中央小部件,用布局填充它,等等。
回答by Eli Bendersky
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.
安装 PyQt 时会附带示例。这些示例包含许多非常有用的代码,您可以从中学习,也可以获取完整的代码块并使用它们。
Check out, for example, the "Address book" example which pops message boxes along other things (search its sources for "messagebox").
例如,查看“地址簿”示例,该示例将消息框与其他内容一起弹出(搜索“消息框”的来源)。
回答by user
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:
来源:


