本文主要列出来python图形开发GUI库pyqt5的窗体,控件属性与方法如果你想看看python图形开发GUI库pyqt5的基础使用方法可以查看我们的另一篇文章 python图形开发GUI库pyqt5的基本使用方法详解
基本框架
import sys from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * class Demo(QWidget): def __init__(self): super(Demo, self).__init__() # 设置主界面 # 设置控件 # 设置布局 # 设置信号 def main(self): # 槽函数 if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())
程序启动画面
if __name__ == '__main__': app = QApplication(sys.argv) # 原有 splash = QSplashScreen() splash.setPixmap(QPixmap('images/splash.jpg')) splash.show() splash.showMessage('string', Qt.AlignBottom | Qt.AlignCenter, Qt.white) demo = Demo() # 原有 demo.show() # 原有 splash.finish(demo) sys.exit(app.exec_()) # 原有
一、设置主界面
self.setWindowTitle('title') # 设置窗体名称
self.setWindowIcon('path') # 设置窗体图标
self.resize(300, 250) # 更改窗体大小
self.size() # 获取窗体大小
self.width() # 获取窗体宽度
self.height() # 获取窗体高度
self.setFixedWidth(int width) # 设置窗体宽度
self.setFixedHeight(int height) # 设置窗体高度
self.setFixedSize(int width, int height) # 设置窗体大小
self.setGeometry(int x, int y, int width, int height) # 设置窗口位置
self.frameGeometry() # 获取窗口的大小和位置
self.move(int x, int y) # 设置窗口的位置
self.pos() # 获取窗口左上角坐标
self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint) # 禁止最大化按钮
self.setFixedSize(self.width(), self.height()) # 禁止拉伸窗口大小
二、设置控件
1、QMessageBox消息框
1、基本格式
QMessageBox.information(QWidget, ‘Title', 'Content‘, buttons)
第一个参数填self,表示该信息框属于我们这里的Demo窗口;第二个参数类型为字符串,填入的是该信息框的标题;第三个参数类型也是字符串,填入的是信息框的提示内容;最后个参数为信息框上要添加的按钮。多个按钮之间用 | 来连接,常见的按钮种类有以下几种:
QMessageBox.Ok
QMessageBox.Yes
QMessageBox.No
QMessageBox.Close
QMessageBox.Cancel
QMessage.Open
QMessage.Save
2、各种类型的框
3、与消息框进行交互
choice = QMessageBox.question(self, 'Title', 'Content', QMessageBox.Yes | QMessageBox.No) if choice == QMessageBox.Yes: pass elif choice == QMessageBox.No: pass
2、文本编辑框和文本浏览框
实例化控件
self.text_edit = QTextEdit(self) # 文本编辑框
self.text_browser = QTextBrowser(self) # 文本浏览框
设置信号
控件方法
3、各种按钮
QPushButton,QToolButton,QRadioButton和QCheckBox均继承自QAbstractButton类
实例化控件
self.test_button = QPushButton('Test', self) # 实例化按钮
self.test_button = QPushButton('&Download',self) # 实例化按钮并设置快捷键为Alt+D
self.test_button = QToolButton(self) # 工具按钮(初始不能传入文本)
self.on_button = QRadioButton('on', self) # 单选按钮
self.checkbox1 = QCheckBox('Checkbox 1', self) # 复选框的三种状态:全选中、半选中和无选中
设置信号
控件方法
4、标签
实例化控件
self.label = QLabel(self)
控件方法
5、单行文本框
实例化控件
self.lineedit = QLineEdit(self)
控件方法
设置信号
6、下拉选择框和数字调节框
实例化控件
self.combobox_1 = QComboBox(self) # 普通下拉框(无内容)
self.combobox_2 = QFontComboBox(self) # 字体下拉框(有字体选择)
self.spinbox = QSpinBox(self) # 数字调节框(默认范围0-99)
self.doublespinbox = QDoubleSpinBox(self) # 浮点数字调节框(默认范围0.00-99.99)
设置信号
控件方法
7、滑动条和旋钮
实例化控件
self.slider_1 = QSlider(Qt.Horizontal, self) # 水平滑动条
self.slider_2 = QSlider(Qt.Vertical, self) # 垂直滑动条
self.dial = QDial(self) # 旋钮
设置信号
控件方法
8、定时器和进度条
实例化控件
控件方法
9、数字显示屏
实例化控件
self.lcd = QLCDNumber(self) # 数字显示屏
控件方法
三、设置布局
1、实例化布局
v_layout = QVBoxLayout() # 垂直布局
h_layout = QHBoxLayout() # 水平布局
form_layout = QFormLayout() # 表单布局
grid_layout = QGridLayout() # 网格布局
2、给布局添加占位符|控件|布局
self.label.setAlignment(Qt.AlignCenter) # 设置居中方式
h_layout.addStretch(1) # 设置占位符
v_layout.addWidget(self.user_label) # 垂直布局添加控件
h_layout.addWidget(self.user_line) # 水平布局添加控件
all_v_layout.addLayout(v_layout) # 垂直布局添加垂直布局
all_h_layout.addLayout(h_layout) # 水平布局添加水平布局
form_layout.addRow(self.user_label, self.user_line) # 表单布局添加控件
grid_layout.addWidget(self.user_label, 0, 0, 1, 1) # 网格布局添加控件
grid_layout.addWidget(self.user_label, 0, 0) # 默认是1行1列
QGridLayout的addWidget()方法遵循如下语法形式:
addWidget(widget, row, column, rowSpan, columnSpan)
widget就是要添加的控件;row为第几行,0代表第一行;column为第几列,0代表第一列;rowSpan表示要让这个控件去占用几行(默认一行);columnSpan表示要让这个控件去占用几列(默认一列)。
3、设为整个窗口的最终布局方式
self.setLayout(all_h_layout)
四、各种对话框
1、颜色对话框和字体对话框
color = QColorDialog.getColor() # 颜色对话框(十六进制的值会保存在color变量中) if color.isValid(): # 判断color是否有效 self.text_edit.setTextColor(color) font, ok = QFontDialog.getFont() # 字体对话框 if ok: self.text_edit.setFont(font)
2、输入对话框
实例:
content, ok = QInputDialog.getText(self, 'title', 'content')
content, ok = QInputDialog.getInt(self, 'title', 'content')
content, ok = QInputDialog.getDouble(self, 'title', 'content')
content, ok = QInputDialog.getMultiLineText(self, 'title', 'content')
Item, ok = QInputDialog.getItem(self, 'title', 'content', list, 0, False)
getItem(parent, str, str, iterable, int, bool)方法需要多设置几个参数,前三个与getText()相同,第四个参数为要加入的选项内容,第五个参数为最初显示的选项,最后一个参数是选项内容是否可编辑。
3、文件对话框
path, _ = QFileDialog.getSaveFileName(self, 'title', './', 'Excel Files (*.xlsx;*.xls);;All Files (*)') # 选择保存文件
path, _ = QFileDialog.getOpenFileName(self, 'title', './', 'Excel Files (*.xlsx;*.xls);;All Files (*)') # 选择文件
path, _ = QFileDialog.getOpenFileNames(self, 'title', './', 'Excel Files (*.xlsx;*.xls);;All Files (*)') # 选择多个文件
path, _ = QFileDialog.getExistingDirectory(self, 'title', './') # 选择文件夹
参数:指定父类,文件对话框的标题,对话框打开时显示的路径,文件扩展名过滤器
其中设置文件扩展名过滤,用双分号间隔。
'All Files (*);;PDF Files (*.pdf);;Text Files (*.txt)'
五、界面关闭事件
def closeEvent(self, QCloseEvent): # 关闭事件函数 if not self.saved: # 如果未保存 choice = QMessageBox.question(self, '', 'Do you want to save the text?', QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel) if choice == QMessageBox.Yes: # 如果需要继续保存 self.saved_func() # 调用函数进行保存 QCloseEvent.accept() # 接受关闭事件 elif choice == QMessageBox.No: # 如果不需要继续保存 QCloseEvent.accept() # 接受关闭事件 else: QCloseEvent.ignore() # 忽略关闭事件
更多关于python图形开发GUI库pyqt5的使用方法请查看下面的相关链接