1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > PyQt5基本组件使用

PyQt5基本组件使用

时间:2018-12-04 15:33:53

相关推荐

PyQt5基本组件使用

接上一篇:PyQt5制作一个简单的登录界面

本文使用PyQt5中的基本组件实现一个界面。

先看一下效果图

代码如下:

# PyQt基本组件"""Qt界面基本思路:1、容器 布局layout:QHBoxLayout,QVBoxLayout,QGridLayout分组容器:QGroupBox,QTabWidget2、组件:QLabel,QCheckBox,QComboBox,QLineEdit,QProgressBar,QPushButton,QRadioButton,QScrollBar,QSlider,QSpinBox,QTabWidget,QTableWidget,QTextEdit,QWidget,QDial,QDateTimeEdit3、事件处理、数据绑定"""import sysfrom PyQt5.QtCore import QDateTime,QTimer,Qtfrom PyQt5.QtWidgets import (QApplication,QGridLayout,QHBoxLayout,QVBoxLayout,QGroupBox,QTabWidget,QLabel,QCheckBox,QDateTimeEdit,QRadioButton,QComboBox,QLineEdit,QTextEdit,QDialog,QPushButton,QSlider,QScrollBar,QSpinBox,QTableWidget,QProgressBar,QDial,QWidget,QStyleFactory,QSizePolicy)class WidgetGallery(QDialog):def __init__(self,parent=None):# 设置自定义样式super(WidgetGallery,self).__init__(parent)self.originalPalette = QApplication.palette()# 下拉列表style_combobox=QComboBox()style_combobox.addItems(QStyleFactory.keys())# 标签style_label=QLabel('样式')style_label.setBuddy(style_combobox)self.use_stander_checkbox=QCheckBox('使用标准样式')self.use_stander_checkbox.setChecked(True)# 下拉列表选择不同的样式,进行更改style_combobox.activated[str].connect(self.changeStyle)self.use_stander_checkbox.toggled.connect(self.changePalette)disable_widget_checkbox=QCheckBox('禁用组件')self.createTopLeftGroupBox()self.createTopRightGroupBox()self.createBottomLeftTabWidget()self.createBottomRightGroupBox()self.createProgressbar()# 顶端布局,水平布局top_layout=QHBoxLayout()top_layout.addWidget(style_label)top_layout.addWidget(style_combobox)top_layout.addWidget(self.use_stander_checkbox)top_layout.addWidget(disable_widget_checkbox)# 主体布局main_layout=QGridLayout()main_layout.addLayout(top_layout,0,0,1,2)main_layout.addWidget(self.top_left_group,1,0)main_layout.addWidget(self.top_right_group,1,1)main_layout.addWidget(self.bottom_left_tabwidget,2,0)main_layout.addWidget(self.bottom_right_group,2,1)main_layout.addWidget(self.progressbar,3,0,1,2)self.setLayout(main_layout)self.setWindowTitle('基本组件')# 左上角:第一组基本组件def createTopLeftGroupBox(self):self.top_left_group=QGroupBox('第一组')radiobutton1=QRadioButton('单选1')radiobutton2=QRadioButton('单选2')radiobutton3=QRadioButton('单选3')checkbox=QCheckBox('Tri-state checkbox')checkbox.setTristate(True)checkbox.setCheckState(Qt.PartiallyChecked)# 垂直布局layout=QVBoxLayout()layout.addWidget(radiobutton1)layout.addWidget(radiobutton2)layout.addWidget(radiobutton3)layout.addWidget(checkbox)self.top_left_group.setLayout(layout)# 右上角:第二组def createTopRightGroupBox(self):self.top_right_group=QGroupBox('第二组')default_button=QPushButton('默认Button')default_button.setDefault(True)toggle_button=QPushButton('开关Button')toggle_button.setCheckable(True)toggle_button.setChecked(True)flat_button=QPushButton('FlatButton')flat_button.setFlat(True)# 垂直布局layout = QVBoxLayout()layout.addWidget(default_button)layout.addWidget(toggle_button)layout.addWidget(flat_button)self.top_right_group.setLayout(layout)# 左下角,构建选项卡def createBottomLeftTabWidget(self):# 选项卡self.bottom_left_tabwidget=QTabWidget()self.bottom_left_tabwidget.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Ignored)# 设置选项卡默认大小# 标签tab1=QWidget()tablewidget=QTableWidget(10,10)tab1hbox=QHBoxLayout()#水平布局tab1hbox.addWidget(tablewidget)tab1.setLayout(tab1hbox)# 将标签设置为tab1hbox的布局tab2=QWidget()textedit=QTextEdit()textedit.setPlainText('你是\n''傻逼')tab2hbox=QHBoxLayout()tab2hbox.addWidget(textedit)tab2.setLayout(tab2hbox)self.bottom_left_tabwidget.addTab(tab1,'表格')self.bottom_left_tabwidget.addTab(tab2,'文本')# 右下角,第三组def createBottomRightGroupBox(self):self.bottom_right_group=QGroupBox('第三组')lineedit=QLineEdit('strs3')lineedit.setEchoMode(QLineEdit.Password)spinbox=QSpinBox(self.bottom_right_group)spinbox.setValue(20)datetimeedit=QDateTimeEdit(self.bottom_right_group)datetimeedit.setDateTime(QDateTime.currentDateTime())slide=QSlider(Qt.Horizontal,self.bottom_right_group)slide.setValue(50)scrollbar=QScrollBar(Qt.Horizontal,self.bottom_right_group)scrollbar.setValue(40)dial=QDial(self.bottom_right_group)dial.setValue(20)dial.setNotchesVisible(True)layout=QGridLayout()layout.addWidget(lineedit,0,0,1,2)layout.addWidget(spinbox,1,0,1,2)layout.addWidget(datetimeedit,2,0,1,2)layout.addWidget(slide,3,0)layout.addWidget(scrollbar,4,0)layout.addWidget(dial,3,1,2,1)self.bottom_right_group.setLayout(layout)# 构建进度条def createProgressbar(self):self.progressbar=QProgressBar()self.progressbar.setRange(0,1000)self.progressbar.setValue(0)timer=QTimer(self)# qt事件处理机制timer.timeout.connect(self.advanceProgressBar)timer.start(1000)def advanceProgressBar(self):cur_val=self.progressbar.value()max_val=self.progressbar.maximum()self.progressbar.setValue(cur_val+(max_val-cur_val)/100)# self.progressbar.setValue(max_val-cur_val)# 改变模板def changePalette(self):if self.use_stander_checkbox.isChecked():QApplication.setPalette(QApplication.style().standardPalette())else:QApplication.setPalette(self.originalPalette)# 改变样式def changeStyle(self,style_name):QApplication.setStyle(QStyleFactory.create(style_name))self.changePalette()if __name__=='__main__':app=QApplication(sys.argv)gallery=WidgetGallery()gallery.show()sys.exit(app.exec_())

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。