PyQt6学习笔记_3 Widgets(代码部分)

import sys
from PyQt6.QtWidgets import (
    QMainWindow, QApplication,
    QLabel, QCheckBox, QComboBox, QListWidget, QLineEdit,
    QLineEdit, QSpinBox, QDoubleSpinBox, QSlider, QDial
)
from PyQt6.QtCore import Qt

请搭配笔记部分食用!

QLabel

'''
class MainWindow(QMainWindow):

    def __init__(self):
        super(MainWindow, self).__init__()

        self.setWindowTitle("My App")

        widget = QLabel("Hello")
        font = widget.font()  # 选定字体模块
        font.setPointSize(30)  # 更改字体大小
        widget.setFont(font)  # 应用字体
        widget.setAlignment(Qt.AlignmentFlag.AlignHCenter | Qt.AlignmentFlag.AlignVCenter)
        # 设置对齐样式(垂直居中水平居中)

        self.setCentralWidget(widget)
'''

QCheckBox

'''
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.setWindowTitle("My App")

        widget = QCheckBox('this is a checkbox')
        widget.setCheckState(Qt.CheckState.Checked)  # 设置初始状态,打勾

        # 如果想要使box有三种状态:widget.setCheckState(Qt.PartiallyChecked)
        # 或者 widget.setTriState(True)
        widget.stateChanged.connect(self.show_state)

        self.setCentralWidget(widget)

    def show_state(self, s):
        print(s == Qt.CheckState.Checked)
        print(s)  # s: 打勾时值为2, 空时值为0
'''

QComboBox

'''
class MainWindow(QMainWindow):

    def __init__(self):
        super(MainWindow, self).__init__()

        self.setWindowTitle("My App")

        widget = QComboBox()
        widget.addItems(["One", "Two", "Three"])  # 下拉菜单添加元素

        widget.currentIndexChanged.connect(self.index_changed)  # 当选择不同项时传出选择项的索引

        widget.currentTextChanged.connect(self.text_changed)  # 当选择不同项时传出选择项的内容

        self.setCentralWidget(widget)

    def index_changed(self, i):
        print(i)

    def text_changed(self, s):
        print(s)
'''

QListWidget

'''
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.setWindowTitle("My App")

        widget = QListWidget()
        widget.addItems(["One", "Two", "Three"])

        widget.currentItemChanged.connect(self.index_changed)
        widget.currentTextChanged.connect(self.text_changed)

        self.setCentralWidget(widget)


    def index_changed(self, i): # Not an index, i is a QListItem
        print(i.text())

    def text_changed(self, s): # s is a str
        print(s)
'''

QLineEdit

'''
class MainWindow(QMainWindow):

    def __init__(self):
        super(MainWindow, self).__init__()

        self.setWindowTitle("My App")

        widget = QLineEdit()
        widget.setMaxLength(10)  # 设置文本最大长度
        widget.setPlaceholderText("Enter your text")  # 文本框默认显示的灰色文字

        # widget.setReadOnly(True)  # 设置为只读

        widget.returnPressed.connect(self.return_pressed)
        widget.selectionChanged.connect(self.selection_changed)
        widget.textChanged.connect(self.text_changed)
        widget.textEdited.connect(self.text_edited)

        widget.setInputMask('000.000.000.000;_')

        self.setCentralWidget(widget)

    def return_pressed(self):  # 按回车键触发
        print("Return pressed!")
        self.centralWidget().setText("BOOM!")  # 将输入框内的文本前面加上前缀

    def selection_changed(self):  # 鼠标划动取词触发
        print("Selection changed")
        print(self.centralWidget().selectedText())

    def text_changed(self, s):  # 文本更改后触发,每次更改一个字母都会触发
        print("Text changed...")
        print(s)

    def text_edited(self, s):  # 文本编辑后触发
        print("Text edited...")
        print(s)
'''

QSpinBox and QDoubleSpinBox

'''
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("My App")

        widget = QSpinBox()
        # Or: widget = QDoubleSpinBox()

        widget.setMinimum(-10)  # 设置数字的边界
        widget.setMaximum(3)
        # Or: widget.setRange(-10,3)

        widget.setPrefix("$")  # 设置前缀
        widget.setSuffix("c")  # 设置后缀
        widget.setSingleStep(3)  # 每按一次箭头数值变化的大小,spinbox只能是整数
        widget.valueChanged.connect(self.value_changed)
        widget.textChanged.connect(self.value_changed_str)

        self.setCentralWidget(widget)

    def value_changed(self, i):  # i 包括前后缀
        print("valueChanged")
        print(i)

    def value_changed_str(self, s): # s不包括前后缀,为int(float)
        print("text changed")
        print(s)
'''

QSlider

'''
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("My App")

        widget = QSlider(Qt.Orientation.Horizontal)

        widget.setMinimum(-10)
        widget.setMaximum(30)

        # Or: widget.setRange(-10,3)

        widget.setSingleStep(5)  # 这行好像没作用。。。

        widget.valueChanged.connect(self.value_changed)
        widget.sliderMoved.connect(self.slider_position)
        widget.sliderPressed.connect(self.slider_pressed)
        widget.sliderReleased.connect(self.slider_released)

        self.setCentralWidget(widget)

    def value_changed(self, i):  # 数值改变时触发,返回数值
        print(i)

    def slider_position(self, p): # 返回滑块的位置,p为数值
        print("position", p)

    def slider_pressed(self):  # 鼠标点击时触发
        print("Pressed!")

    def slider_released(self): # 鼠标松开时触发
        print("Released")
'''

QDial

'''
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("My App")

        widget = QDial()
        widget.setRange(-10, 100)
        widget.setSingleStep(1)

        widget.valueChanged.connect(self.value_changed)
        widget.sliderMoved.connect(self.slider_position)
        widget.sliderPressed.connect(self.slider_pressed)
        widget.sliderReleased.connect(self.slider_released)

        self.setCentralWidget(widget)

    def value_changed(self, i):
        print(i)

    def slider_position(self, p):
        print("position", p)

    def slider_pressed(self):
        print("Pressed!")

    def slider_released(self):
        print("Released")
'''


app = QApplication(sys.argv)
w = MainWindow()
w.show()
app.exec()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值