鱼C论坛

 找回密码
 立即注册
查看: 5342|回复: 13

[作品展示] 温故而知新---PyQt5学习系列---组团来袭!

[复制链接]
发表于 2015-6-8 15:21:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.jpg

很多时候,想让一群东西组合在一起,一次选一个。就像下拉框一样。那Qt中有木有这个玩意呢。
答案当然是有咯。Qt中他叫: ComboBox,呃,组合盒子?

1. 基本窗口。
  1. import sys

  2. from PyQt5.QtWidgets import *


  3. class Main(QWidget):

  4.     def __init__(self, parent=None):
  5.         super(Main, self).__init__(parent)
  6.         self.setObjectName("main")
  7.         self.setWindowTitle("组团")
  8.         self.resize(360, 230)

  9.         self.comboBox = QComboBox(self)
  10.         self.comboBox.move(150, 60)

  11. if __name__ == '__main__':
  12.     app = QApplication(sys.argv)
  13.     window = Main()
  14.     window.show()
  15.     sys.exit(app.exec_())
复制代码


好长时间不写不会忘了吧~~。
360截图20150608140533416.jpg
嗯,我们什么也没给他加。

2. 基本属性。
addItem(const QString & text, const QVariant & userData = QVariant())        
        添加一个小伙伴进入这个组合。第一个参数是一个字符串类型。后面那个暂时不知道。。
addItem(const QIcon & icon, const QString & text, const QVariant & userData = QVariant())
        同上,可以给小伙伴加个图标。
addItems(const QStringList & texts)
        添加一堆小伙伴进入这个组合。
count()
        返回一共有几个小伙伴在这个组合里。
currentIndex()
        返回当前选择的小伙伴编号。
currentText()
        返回当前选择的小伙伴名字。
insertItem(int index, const QString & text, const QVariant & userData = QVariant())
        在某小伙伴前面插入一个小伙伴。当然还可以给这个小伙伴一个图标。
setItemText(int index, const QString & text)
        设置某个小伙伴的名字。
setItemIcon(int index, const QIcon & icon)
        设置某个小伙伴的图标。



3. 小伙伴们。
  1.         for i in range(13):
  2.             self.comboBox.addItem('F%d' % i)
复制代码

2.jpg
当然,这个组合现在还是原始形态。

4. 必不可少的特效!
  1. QWidget#main{
  2.     background: #55AA55;
  3. }

  4. QComboBox{
  5.     width: 30px;
  6.     border: 0px;
  7. }
复制代码


3.jpg
我们进一步设置一下QComboBox下拉按钮的样子。
嗯,首先呢需要知道这个按钮的名字。
4.jpg
按钮叫drop-down,里面的箭头叫down-arrow。
呃。设置这个的话最好还是弄图片吧。
5.jpg
多大x多大的自己约摸着弄吧。

嗯,直接覆盖drop-down好了,当他的背景。
  1. QComboBox::drop-down{
  2.     background-image: url(down.png);
  3. }
复制代码

但是呢,我们打开会发现。
6.jpg
默认他会让背景图片是重复的属性。也就是说太小了,需要重复铺。

如何解决呢?
  1. background-repeat: no-repeat;
复制代码

设置为不重复。
7.jpg
不过他依然木有在中间显示。
在来。
  1. background-position: center;
复制代码

8.jpg
这下是可以了,呃,这就是个例子,轻点吐槽。

扩展:
选择选项时用的属性是on,选完用的是off。
QComboBox::on,QComboBox::off。

弄完QComboBox的样式,再来弄弄下拉列表的样式吧。


4.  休息室。
下拉列表由两个部分组成。
一个是QListView,一个是QScrollBar。我们一个个设置。

  1. QListView{
  2.     background: green;
  3.     selection-background-color: black;
  4.     selection-color: white;
  5. }
复制代码


背景没啥好说的。
其他两个属性
selection-background-color  里面的选项鼠标移入和点击时(也就是选择时)的背景颜色是黑色。
selection-color 文字颜色。

9.jpg

我们会发现,选择时有一个可恶的虚线。

这玩意应该是一个item,设置一下item应该就行了。

  1. QListView::item{
  2.     outline: none;
  3. }
复制代码

10.jpg
但是发现并没有什么效果。

查文档也没发现其他属性。呃,其实这玩意不叫item。它是跟着QComboBox混的。
他叫QAbstractItemView。嗯,试试看。
  1. QComboBox QAbstractItemView{
  2.     outline: none;
  3. }
复制代码

11.jpg
当然其他效果可以查看一下css,或者放张图片。

5. 管理员。
下拉列表的第二个成员QScrollBar。呃,他不止在QComboBox里出现,在其他里面有滚动条的基本都是他了。
他分为两种一种是vertical,一种是horizontal。垂直和水平哈。
不区分的话两个都会设置。这货属性贼多。
12.jpg
sub-line   包含上箭头的区域。
up-arrow   上箭头。
sub-page   滑块划过的区域。
handle     滑块。
add-page   滑块未划过的区域。
add-line    包含下箭头的区域。
down-arrow   下箭头。

  1. QScrollBar{
  2.     background: gray;
  3.     width: 7px;
  4. }

  5. QScrollBar::sub-line, QScrollBar::add-line{
  6.     height: 0px;
  7. }

  8. QScrollBar::sub-page{
  9.     background: red;
  10. }

  11. QScrollBar::add-page{
  12.     background: yellow;
  13. }

  14. QScrollBar::handle{
  15.     border: none;
  16.     min-height: 20px;
  17.     border-radius: 3px;
  18.     background: gray;
  19. }

  20. QScrollBar::handle:hover{
  21.     background: black;
  22. }
复制代码


13.jpg

当然也是可以加图片滴。具体咋设置多写写吧~。



评分

参与人数 2荣誉 +10 鱼币 +10 贡献 +8 收起 理由
拈花小仙 + 5 + 5 + 3 感谢楼主无私奉献!
小人 + 5 + 5 + 5 热爱鱼C^_^

查看全部评分

本帖被以下淘专辑推荐:

  • · PyQt|主题: 45, 订阅: 73
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-10 15:48:41 | 显示全部楼层
我记得好像上大学的时候学过这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-11 09:26:55 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-11 10:42:05 | 显示全部楼层
虽然看不懂大神们说的东东,但我还是到处蹭鱼币,为了下载课后题,如果谁能发我一份 学习Python007以后 的课后题的话,那真是感激不尽了

评分

参与人数 1鱼币 +10 收起 理由
wei_Y + 10 谁没水过几发鱼币~。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-11 11:00:27 | 显示全部楼层
gagafishc 发表于 2015-6-11 10:42
虽然看不懂大神们说的东东,但我还是到处蹭鱼币,为了下载课后题,如果谁能发我一份 学习Python007以后 的 ...

多谢大神  在高手们的扶持下,学起来更有动力了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-11 11:02:11 | 显示全部楼层
原谅我不会用这些回复功能  不会回复你  wei_Y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-11 12:20:07 | 显示全部楼层
学过C++的Qt,现在刚刚开始学习python,学好基础之后也学学PyQt吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-5 17:53:06 | 显示全部楼层
qt就是相当于mfc?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-20 15:33:06 | 显示全部楼层
这是做成一个系列了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-21 10:19:28 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-1 09:39:43 | 显示全部楼层
我是来学习的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-13 17:40:37 | 显示全部楼层
这个好,留名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-13 20:59:11 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-13 10:43:01 | 显示全部楼层
在这种技术贴下面水他个一发鱼币 简直美滋滋
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 20:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表