PyQT 入门(2):实现自己的界面类

来源:互联网 发布:易语言网页数据采集 编辑:程序博客网 时间:2024/06/07 18:16


主要内容


  • 通过继承实现自己的界面类;
  • 涉及模块:QDialog, QLineEdit , QTextBrowser
  • 界面布局:绝对布局,布局类

 

实例讲解


先看一段代码,我们定义了一个类Form,它继承自QDialog

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Form(QDialog):
  
    def __init__(self, parent=None):
        super(Form,self).__init__(parent)
        self.browser= QTextBrowser()
        self.lineedit= QLineEdit("Type an expression and press Enter")
        self.lineedit.selectAll()
        layout= QVBoxLayout()#垂直盒式布局
        layout.addWidget(self.browser)
        layout.addWidget(self.lineedit)<br>   
        #layout = QGridLayout() #网格布局
        #layout.addWidget(self.browser,0, 0) 
        #layout.addWidget(self.lineedit,0, 0)
        self.setLayout(layout)
        self.lineedit.setFocus()
        self.connect(self.lineedit, SIGNAL("returnPressed()"),self.updateUi)#信号绑定到槽
        self.setWindowTitle("Calculate")
  
    def updateUi(self):
        try:
            text= unicode(self.lineedit.text())
            self.browser.append("%s = <b>%s</b>" % (text,eval(text)))
        except:
            self.browser.append(
                    "<font color=red>%s is invalid!</font>" % text)
  
app= QApplication(sys.argv)
form= Form()
form.show()
app.exec_()

(1) QDialog是窗口类, QLineEdit文本框,QTextBrowser显示内容的文本区域,支持html格式语法。

(2)layout = QVBoxLayout() 垂直盒式布局,即内容对象上下排列

  说到布局,主要分为两类:绝对布局,相对布局(相应类)

  • 绝对布局,调用move(x,y)方法
  • 相对布局,常用的有 QHBoxLayout, QVBoxLayout  和QGridLayout (网格布局)

(3)特别注意的是 self.connect(self.lineedit, SIGNAL("returnPressed()"), self.updateUi)

这是PyQt的事件处理机制 ---- 信号与槽(Signals and slots):

信号相当于一个事件:如点击按钮,完成输入后按回车等等;槽相当于处理函数。

在上面程序中,当在文本框中完成输入按回车时,就会调用updateUi函数,这就是connect绑定的效果。

程序效果如下:

 

简要总结:


  •  通过继承实现窗体类
  •  窗口布局方法
  •  QDialog, QLineEdit , QTextBrowser
  •  QLineEdit 方法:
    • 获取unicode 文本: unicode(lineEdit.text())  
  •  QTextBrowser 方法:
    • 添加内容 textBrowser.appen("formatText")
  •  信号与槽
    • self.connect(widget, signal , slot)

 

扩展知识:


熟悉常用的窗口组件:

1 按钮类

 

QPushButton  

普通按钮

QToolButton  

工具按钮:通常在工具栏使用

QRadioButton  

单选框

QCheckBox  

复选框

QCommanLinkButton

Vista风格的命令链接按钮

QDialogButtonBox  

对话框按钮组:确定、取消

 

2 显示组件

 

QLabel

标签

QTextBrowser

文本区域

QGraphicsView

图像显示

QCalendarWidget

日历组件

QProgressBar

进度条

QLCDNumber

液晶数字显示

QWebView

Web浏览器视图

QDeclarativeView

显示Qt声明的用户接口

 

3 输入组件

QComboBox

下拉选框

QFontComboBox

字体选择

QLineEdit

单行文本框

QTextEdit

多行文本框(富文本)

QPlainTextEdit

多行文本框(纯文本)

QSpinBox

整数范围调节器

QDoubleSpinBox

实型范围调节器

QDial

环形范围调节器

QSlider

滑动调节器

QTimeEdit

时间输入框

QDateEdit

日期输入框

QDateTimeEdit

时间日期输入框

 

4 容器类

QFrame

帧窗口

QWidget

界面部件,所有界面对象类的基类

QToolBox

工具栏容器

QTabWidget

多标签容器

QStackedWidget

层次容器,一次只有一个可见

QScollArea

滚动区域

QGroupBox

对象组容器

QMdiArea

多文档容器

QDockWidget

悬浮容器

 
 

QDail, QSpinBox的使用

QDial:环形的范围选择器

QSpinBox :下拉列表形式的整数选择器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Form(QDialog):
 
    def __init__(self, parent=None):
        super(Form,self).__init__(parent)
 
        dial= QDial()
        dial.setNotchesVisible(True)
        spinbox= QSpinBox()
        layout= QHBoxLayout()
        layout.addWidget(dial)
        layout.addWidget(spinbox)
        self.setLayout(layout)
 
        self.connect(dial, SIGNAL("valueChanged(int)"),spinbox.setValue)
        self.connect(spinbox, SIGNAL("valueChanged(int)"),dial.setValue)
        self.setWindowTitle("Signals and Slots")

 

 

 

 


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 如果真的物价高的受不了怎么办 每晚要5次真的受不了怎么办 五年级的学生钢笔字写不好怎么办 全麻醉药过后让人产生幻觉怎么办? 网贷小象优品上被别人冒用了怎么办 当你和老人产生冲突时该怎么办 百度网盘会员到期后容量怎么办 一个人不停的给你发视频聊天怎么办 被谋杀后的身后事应该怎么办 社保交了五年被单位辞退怎么办 桅子花叶子变黄叶杆蔫怎么办 薄荷养的都黄了干掉了怎么办 被烟草局没收的烟要是假烟怎么办 干了10年工程不想干了怎么办 在服务行业当服务员干不下去怎么办 高中生晚上偷着跑出去玩怎么办 货车高速忘记过安全检查站了怎么办 u盘上的文件名称乱码了怎么办 暖气管掉进去一点水泥渣怎么办 暗埋在瓷砖下的暖气管漏水怎么办 埋在瓷砖下面的水管漏水怎么办 埋在瓷砖下的水管漏水怎么办 水压太大把水管撑坏了怎么办 无效安装包与系统不兼容怎么办 圣空法师持五戒范戒了怎么办 美航空要是不改中国台湾标志怎么办 淘宝买的东西质量有问题怎么办 天猫618长达20天c店怎么办 新开的淘宝店铺没有生意怎么办 淘宝账号登陆限制用不了花呗怎么办 闲鱼买家签收后说是空盒怎么办 在咸鱼卖东西买家恶意退货怎么办 淘宝联系不上买家物流返回怎么办 换了支付宝绑定手机号退款怎么办啊 淘宝评价错了追评评价错了怎么办 淘宝给客户退款后还给差评怎么办 淘宝账号处于下单保护状态怎么办 淘宝卖家物流单号写错了怎么办 有个人给我发直播消息怎么办 网贷申请多了现在秒拒怎么办 顺丰快递寄的瓜果坏了怎么办