主题:本文我们实现一系列的弹窗效果,效果展示如下:
实现这系列功能很简单,基本上都是类似的操作,我们从基础弹窗、消息弹窗到输入框弹窗及清除按钮的顺序来介绍。
1 基础对话框
我们只需要设置一个self.dialog = Dialog()就可以实现基础的弹窗效果。
我们创建一个QMainWindow,并把基础的弹窗对象配置到主窗口里。
下面代码设计主窗口:
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow,self).__init__(parent)
# 标题
self.setWindowTitle("弹窗测试")
# 固定窗体大小
self.setFixedSize(400,300)
下面是基础弹窗对象:
def show_dialog(self):
self.dialog = Dialog()
self.dialog.show()
self.dialog.exec()
此时我们在主窗口里添加基础弹窗按钮,实现信号和槽的对应关系:
self.btn = QPushButton(self)
self.btn.setText("弹出对话框")
self.btn.move(30,50)
self.btn.clicked.connect(self.show_dialog)
效果如下:
当点击的时候,弹出基础弹窗:
2 消息对话框
消息对话框实现需要用到QMessageBox类,并按照下列代码进行方法的构造,创造槽函数。
def msg_dialog(self):
reply = QMessageBox.information(self,'提示','我要在网上问问吗?',
QMessageBox.StandardButton.Yes|QMessageBox.StandardButton.No,
defaultButton=QMessageBox.StandardButton.No)
if reply==QMessageBox.StandardButton.Yes:
print("OK")
接下来在主窗口里创建按钮,实现信号的触发,来调动这个槽函数。
self.btn2 = QPushButton(self)
self.btn2.setText("消息对话框")
self.btn2.move(230,50)
self.btn2.clicked.connect(self.msg_dialog)
效果如下:
3 输入对话框
输入对话框里你可以输入文字,也可以输入数字,也可以实现下拉列表,不过设计的槽函数如下:
#文本槽函数
def text_dialog(self):
text,ok = QInputDialog.getText(self,'文本测试','输入姓名:')
if ok:
self.te.setText(str(text))
#下拉列表槽函数
def item_dialog(self):
items = ("PyQt基础","java高级教程","算法设计")
item,ok = QInputDialog.getItem(self,"选项测试","课程列表",items,1,True)
if ok and item:
self.te.setText(item)
#数字槽函数
def int_dialog(self):
num,ok = QInputDialog.getInt(self,"整数测试","输入成绩")
if ok:
self.te.setText(str(num))
同样,在主窗体里添加信号触发按钮:
#文本输入框
self.btnInput1 = QPushButton(self)
self.btnInput1.setText("文本测试")
self.btnInput1.move(30,120)
self.btnInput1.clicked.connect(self.text_dialog)
#选项输入框
self.btnItem = QPushButton(self)
self.btnItem.setText("选项测试")
self.btnItem.move(130,120)
self.btnItem.clicked.connect(self.item_dialog)
# 整数输入框
self.btnInt = QPushButton(self)
self.btnInt.setText("整数测试")
self.btnInt.move(230, 120)
self.btnInt.clicked.connect(self.int_dialog)
效果测试:
4 清除按钮
实现清除很简单,只需要把输入框中的文字内容替换成空字符串就可以了,槽函数如下:
def cleanFun(self):
currentContext = self.te.text()
if currentContext != "":
self.te.setText("")
在页面面板中添加触发按钮,并简单的添加红色背景如下:
# 清除
self.cleanBtn = QPushButton(self)
self.cleanBtn.setText("清 除")
self.cleanBtn.move(140, 260)
self.cleanBtn.setStyleSheet("background-color:red;color:#FFF;font-size:18px")
self.cleanBtn.clicked.connect(self.cleanFun)
本文结束,完整代码,请add Q球群9716 71827裙文件获取!