QFontDialog
提供了字体选择框
程序展示
本例中,创建了一个按钮和一个标签的QFontDialog
的对话框,可以修改字体样式
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QVBoxLayout, QFontDialog, QLabel, QSizePolicy
class Example(QWidget):
def __init__(self):
super().__init__()
self.lable = QLabel('Knowledge is wealth', self)
self.initUI()
def initUI(self):
vbox = QVBoxLayout()
b = QPushButton("font dialog", self)
# b.setSizePolicy(0, 0)
b.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
b.clicked.connect(self.fontdialog)
vbox.addWidget(b)
vbox.addWidget(self.lable)
self.setLayout(vbox)
self.setGeometry(300, 300, 250, 180)
self.setWindowTitle('Font dialog')
self.show()
def fontdialog(self):
font, status = QFontDialog.getFont()
if status:
self.lable.setFont(font)
if __name__ == '__main__':
app = QApplication(sys.argv)
e = Example()
sys.exit(app.exec_())
程序预览:
代码解释
在QVboxLayout
布局中添加一个标签和一个按钮时,按钮的高度默认的高度,而标签的高度为容器再加上除去按钮后的高度,按钮的尺寸可通过setSizePolicy
方法设置QSizePolicy
对象的属性来改变
QSizePolicy
的属性有:
Fixed
(0):组件的大小为sizeHint( )的返回值Minimum
(1):sizeHint()
的返回值为组件的最小尺寸,需要时放大Maximum
(4):sizeHint()
的返回值为组件的最大尺寸,需要时缩小Preferred
(1|4):sizeHint()
的返回值为组件的最优尺寸,可以放大或缩小Expanding
(1|2|4):组件占据容器的剩余空间MinimumExpanding
(1|2):sizeHint()
的返回值为组件的最小尺寸,将占据尽可能大的空间Ignored
(1|4|8):组件将占用尽可能多的空间,忽略sizeHint()
的尺寸b = QPushButton("font dialog", self)
# b.setSizePolicy(0, 0)
b.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
弹出一个字体选择框,getFont()`方法返回一个字体对象和状态信息,状态信息有OK和Cancle两种
font, status = QFontDialog.getFont()
如果点击OK,标签的字体就会随之更改
if status:
self.lable.setFont(font)
QFileDialog
给用户提供文件或者文件夹选择的功能,能打开和保存文件
程序展示
本例中,创建了一个菜单栏,一个置中的文本编辑框,一个状态栏。点击new会弹出一个文件选择框,文件的内容就会显示在文本编辑框中
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QFileDialog, QTextEdit
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.t = QTextEdit(self)
self.initUI()
def initUI(self):
menu = self.menuBar()
filemenu = menu.addMenu('File')
newact = QAction("new", self)
newact.setShortcut("ctrl+n")
newact.triggered.connect(self.filedialog)
filemenu.addAction(newact)
self.setCentralWidget(self.t)
self.setGeometry(300, 300, 650, 450)
self.setWindowTitle('文件选择框')
self.show()
def filedialog(self):
filename = QFileDialog.getOpenFileName(self, "打开", "D:/")[0]
if filename:
with open(filename) as f:
self.t.setText(f.read())
if __name__ == '__main__':
app = QApplication(sys.argv)
e = Example()
sys.exit(app.exec_())
程序预览:
代码解释
这里设置了一个文本编辑框,文本编辑框是基于QMainWindow
组件的
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.t = QTextEdit(self)
self.initUI()
弹出文件选择窗口。getOpenFileName()
方法的第一个参数是说明文字,第二个参数是默认打开的文件夹路径,默认情况下显示所有类型的文件
filename = QFileDialog.getOpenFileName(self, "打开", "D:/")[0]
读取选中的文件,并显示在文本编辑框内
if filename:
with open(filename) as f:
self.t.setText(f.read())