成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

pyqy5——控件2

Jochen / 2796人閱讀

摘要:歡迎加群與我一起學(xué)習(xí)創(chuàng)建一個(gè)對(duì)象,接收一個(gè)文件作為參數(shù)。三個(gè)窗口和兩個(gè)分割線的布局創(chuàng)建完成了,但是要注意,有些主題下,分割線的顯示效果不太好。本例包含了一個(gè)和一個(gè)。

控件2

本章我們繼續(xù)介紹PyQt5控件。這次的有QPixmap,QLineEdit,QSplitter,和QComboBox。

圖片

QPixmap是處理圖片的組件。本例中,我們使用QPixmap在窗口里顯示一張圖片。

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt5 tutorial 
歡迎加QQ群`923 414 804`與我一起學(xué)習(xí)
In this example, we dispay an image
on the window. 

Author: Jan Bodnar
Website: zetcode.com 
Last edited: August 2017
"""

from PyQt5.QtWidgets import (QWidget, QHBoxLayout, 
    QLabel, QApplication)
from PyQt5.QtGui import QPixmap
import sys

class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        hbox = QHBoxLayout(self)
        pixmap = QPixmap("redrock.png")

        lbl = QLabel(self)
        lbl.setPixmap(pixmap)

        hbox.addWidget(lbl)
        self.setLayout(hbox)
        
        self.move(300, 200)
        self.setWindowTitle("Red Rock")
        self.show()        
        
        
if __name__ == "__main__":
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
pixmap = QPixmap("redrock.png")

創(chuàng)建一個(gè)QPixmap對(duì)象,接收一個(gè)文件作為參數(shù)。

lbl = QLabel(self)
lbl.setPixmap(pixmap)

QPixmap實(shí)例放到QLabel組件里。

程序展示:

行編輯

QLineEdit組件提供了編輯文本的功能,自帶了撤銷、重做、剪切、粘貼、拖拽等功能。

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt5 tutorial 

This example shows text which 
is entered in a QLineEdit
in a QLabel widget.
 
Author: Jan Bodnar
Website: zetcode.com 
Last edited: August 2017
"""

import sys
from PyQt5.QtWidgets import (QWidget, QLabel, 
    QLineEdit, QApplication)


class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        self.lbl = QLabel(self)
        qle = QLineEdit(self)
        
        qle.move(60, 100)
        self.lbl.move(60, 40)

        qle.textChanged[str].connect(self.onChanged)
        
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle("QLineEdit")
        self.show()
        
        
    def onChanged(self, text):
        
        self.lbl.setText(text)
        self.lbl.adjustSize()        
        
        
if __name__ == "__main__":
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

例子中展示了一個(gè)編輯組件和一個(gè)標(biāo)簽,我們?cè)谳斎肟蚶镦I入的文本,會(huì)立即在標(biāo)簽里顯示出來(lái)。

qle = QLineEdit(self)

創(chuàng)建一個(gè)QLineEdit對(duì)象。

qle.textChanged[str].connect(self.onChanged)

如果輸入框的值有變化,就調(diào)用onChanged()方法。

def onChanged(self, text):
    
    self.lbl.setText(text)
    self.lbl.adjustSize() 

onChanged()方法內(nèi)部,我們把文本框里的值賦值給了標(biāo)簽組件,然后調(diào)用adjustSize()方法讓標(biāo)簽自適應(yīng)文本內(nèi)容。

程序展示:

QSplitter

QSplitter組件能讓用戶通過(guò)拖拽分割線的方式改變子窗口大小的組件。本例中我們展示用兩個(gè)分割線隔開(kāi)的三個(gè)QFrame組件。

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt5 tutorial 

This example shows
how to use QSplitter widget.
 
Author: Jan Bodnar
Website: zetcode.com 
Last edited: August 2017
"""

from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QFrame, 
    QSplitter, QStyleFactory, QApplication)
from PyQt5.QtCore import Qt
import sys

class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        hbox = QHBoxLayout(self)

        topleft = QFrame(self)
        topleft.setFrameShape(QFrame.StyledPanel)
 
        topright = QFrame(self)
        topright.setFrameShape(QFrame.StyledPanel)

        bottom = QFrame(self)
        bottom.setFrameShape(QFrame.StyledPanel)

        splitter1 = QSplitter(Qt.Horizontal)
        splitter1.addWidget(topleft)
        splitter1.addWidget(topright)

        splitter2 = QSplitter(Qt.Vertical)
        splitter2.addWidget(splitter1)
        splitter2.addWidget(bottom)

        hbox.addWidget(splitter2)
        self.setLayout(hbox)
        
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle("QSplitter")
        self.show()
        
        
    def onChanged(self, text):
        
        self.lbl.setText(text)
        self.lbl.adjustSize()        
        
        
if __name__ == "__main__":
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

三個(gè)窗口和兩個(gè)分割線的布局創(chuàng)建完成了,但是要注意,有些主題下,分割線的顯示效果不太好。

topleft = QFrame(self)
topleft.setFrameShape(QFrame.StyledPanel)

為了更清楚的看到分割線,我們使用了設(shè)置好的子窗口樣式。

splitter1 = QSplitter(Qt.Horizontal)
splitter1.addWidget(topleft)
splitter1.addWidget(topright)

創(chuàng)建一個(gè)QSplitter組件,并在里面添加了兩個(gè)框架。

splitter2 = QSplitter(Qt.Vertical)
splitter2.addWidget(splitter1)

也可以在分割線里面再進(jìn)行分割。

程序展示:

下拉選框

QComboBox組件能讓用戶在多個(gè)選擇項(xiàng)中選擇一個(gè)。

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt5 tutorial 

This example shows how to use 
a QComboBox widget.
 
Author: Jan Bodnar
Website: zetcode.com 
Last edited: August 2017
"""

from PyQt5.QtWidgets import (QWidget, QLabel, 
    QComboBox, QApplication)
import sys

class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        self.lbl = QLabel("Ubuntu", self)

        combo = QComboBox(self)
        combo.addItem("Ubuntu")
        combo.addItem("Mandriva")
        combo.addItem("Fedora")
        combo.addItem("Arch")
        combo.addItem("Gentoo")

        combo.move(50, 50)
        self.lbl.move(50, 150)

        combo.activated[str].connect(self.onActivated)        
         
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle("QComboBox")
        self.show()
        
        
    def onActivated(self, text):
      
        self.lbl.setText(text)
        self.lbl.adjustSize()  
        
                
if __name__ == "__main__":
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

本例包含了一個(gè)QComboBox和一個(gè)QLabel。下拉選擇框有五個(gè)選項(xiàng),都是Linux的發(fā)行版名稱,標(biāo)簽內(nèi)容為選定的發(fā)行版名稱。

combo = QComboBox(self)
combo.addItem("Ubuntu")
combo.addItem("Mandriva")
combo.addItem("Fedora")
combo.addItem("Arch")
combo.addItem("Gentoo")

創(chuàng)建一個(gè)QComboBox組件和五個(gè)選項(xiàng)。

combo.activated[str].connect(self.onActivated) 

在選中的條目上調(diào)用onActivated()方法。

def onActivated(self, text):
  
    self.lbl.setText(text)
    self.lbl.adjustSize() 

在方法內(nèi)部,設(shè)置標(biāo)簽內(nèi)容為選定的字符串,然后設(shè)置自適應(yīng)文本大小。

程序展示:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42998.html

相關(guān)文章

  • flutter筆記7:flutter頁(yè)面布局基礎(chǔ),看完這篇就可以用flutter寫(xiě)APP了

    摘要:布局控件不會(huì)直接呈現(xiàn)內(nèi)容,可看作承載可視控件的容器。布局控件也是可以模擬顯示的,通常用于調(diào)試布局樣式時(shí)用到的網(wǎng)格線標(biāo)尺動(dòng)畫(huà)幀等。但是當(dāng)頁(yè)面內(nèi)容需要超出屏幕尺寸時(shí),就用和代替。 不知不覺(jué)已經(jīng)到了第7篇,然而很多萌新玩家可能還是不知道如何堆砌控件,像用CSS一樣搭出漂亮的APP界面,我也一樣,紅紅火火恍恍惚惚,直到今天含淚讀完Flutter布局基礎(chǔ),仿佛打開(kāi)了一個(gè)全新的世界。 基本概念 在...

    Flink_China 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<