pyqy5——控件2

控件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組件里技扼。

程序展示:

image

行編輯

QLineEdit組件提供了編輯文本的功能,自帶了撤銷(xiāo)嫩痰、重做剿吻、剪切、粘貼串纺、拖拽等功能和橙。

#!/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)容。

程序展示:

image

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)行分割睛挚。

程序展示:

image

下拉選框

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)文本大小戈咳。

程序展示:


image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市壕吹,隨后出現(xiàn)的幾起案子著蛙,更是在濱河造成了極大的恐慌,老刑警劉巖耳贬,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踏堡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡咒劲,警方通過(guò)查閱死者的電腦和手機(jī)顷蟆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)腐魂,“玉大人帐偎,你說(shuō)我怎么就攤上這事』滓伲” “怎么了削樊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)兔毒。 經(jīng)常有香客問(wèn)我漫贞,道長(zhǎng),這世上最難降的妖魔是什么育叁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任迅脐,我火速辦了婚禮,結(jié)果婚禮上豪嗽,老公的妹妹穿的比我還像新娘谴蔑。我一直安慰自己豌骏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布树碱。 她就那樣靜靜地躺著肯适,像睡著了一般。 火紅的嫁衣襯著肌膚如雪成榜。 梳的紋絲不亂的頭發(fā)上框舔,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音赎婚,去河邊找鬼刘绣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛挣输,可吹牛的內(nèi)容都是我干的纬凤。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼撩嚼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼停士!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起完丽,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤恋技,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后逻族,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蜻底,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年聘鳞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了薄辅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抠璃,死狀恐怖站楚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搏嗡,我是刑警寧澤源请,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站彻况,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏舅踪。R本人自食惡果不足惜纽甘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抽碌。 院中可真熱鬧悍赢,春花似錦决瞳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至赏迟,卻和暖如春屡贺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锌杀。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工甩栈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人糕再。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓量没,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親突想。 傳聞我的和親對(duì)象是個(gè)殘疾皇子殴蹄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 內(nèi)容 抽屜菜單 ListView WebView SwitchButton 按鈕 點(diǎn)贊按鈕 進(jìn)度條 TabLayo...
    小狼W閱讀 1,613評(píng)論 0 10
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件猾担、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,066評(píng)論 4 62
  • 第二天早早吃過(guò)飯袭灯,趙拳師帶著徒弟們出發(fā)了。臨走時(shí)福泰作為徒弟的身份也去送行垒探,趙拳師拍拍福泰的肩膀妓蛮,讓他這兩天先練練...
    王孟姐姐閱讀 156評(píng)論 0 1
  • 人從出生到有記憶到擁有學(xué)習(xí)能力,再到擁有獨(dú)立的思考能力圾叼,最終擁有個(gè)體輸出能力蛤克。 人終其一生除去溫飽,意義在于體驗(yàn)總...
    互聯(lián)網(wǎng)小透明閱讀 1,497評(píng)論 0 1
  • 晨間檢視 高效率慢生活第89天 連雨紛紛夷蚊。開(kāi)啟運(yùn)動(dòng)模式跑步第22天 學(xué)習(xí)也是分圈層的构挤,不投入深入,不會(huì)有大的收獲 ...
    蒙蒙簡(jiǎn)閱讀 238評(píng)論 0 0