
from PySide6.QtCore import QSize
from PySide6.QtWidgets import QApplication, QMainWindow
class MyMainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('My App Window 我的自定义窗口')
self.setToolTip('My App Tip Info 这是我的自定义窗口的提示信息')
# 设置窗口的固定大小,长 400,宽 300
self.setFixedSize(QSize(400, 300))
if __name__ == '__main__':
app = QApplication([])
window = MyMainWindow()
window.show()
app.exec()上述代码中,class MyMainWindow(QMainWindow):定义了一个名为 MyMainWindow 的类,它继承自 QMainWindow 类。QMainWindow 是Qt框架中用于创建和管理主窗口的一个类,这意味着 MyMainWindow 类将拥有 QMainWindow 的所有功能和属性。
def __init__(self):
super().__init__()这行代码调用了父类 QMainWindow 的构造函数,确保了父类被正确初始化。super() 函数用于访问父类的方法和属性。
设置窗口标题:self.setWindowTitle('My App Window 我的自定义窗口'),这个标题会显示在窗口的标题栏上。
设置窗口的工具提示信息:self.setToolTip('My App Tip Info 这是我的自定义窗口的提示信息'),当用户将鼠标悬停在窗口上时,这个提示信息会显示为一个小型弹出窗口。
设置窗口固定大小:self.setFixedSize(QSize(400, 300)),使用 setFixedSize 方法设置窗口的固定大小,参数 QSize(400, 300) 指定了窗口的宽度为400像素,高度为300像素。这会禁止用户调整窗口大小,窗口大小将被锁定为指定的尺寸。

from PySide6.QtWidgets import QApplication, QPushButton
app = QApplication([])
window = QPushButton("Push Me 这是一个按钮")
window.setToolTip('Tip Info 这是按钮的提示信息')
window.show()
app.exec()
class MyPushButton(QMainWindow):
def __init__(self):
super().__init__()
QPushButton('自定义 QPushButton', self).setToolTip('我的自定义 button 实例')
if __name__ == '__main__':
app = QApplication()
button = MyPushButton()
button.show()
app.exec()
QPushButton 构造函数中的 self 参数是必需的,原因如下:
self 是 MyPushButton 类的实例引用,将其传递给 QPushButton 意味着正在创建一个子控件(按钮),它属于 MyPushButton 窗口。父对象被销毁时,其所有子对象也会自动被销毁。通过将 self 作为父对象传递给 QPushButton,确保了按钮会被正确地管理,并且当 MyPushButton 窗口被销毁时,按钮也会随之销毁。子控件通常会将事件(如鼠标点击、键盘输入等)传递给它们的父对象。通过指定 self 作为父对象,按钮能够将事件传递给 MyPushButton 类的实例,允许在类中处理这些事件。父子关系来管理的。指定 self 作为父对象可以确保按钮被正确地放置在窗口内,并且可以利用布局管理器来自动调整按钮的位置和大小。父对象负责绘制其子对象,并且焦点策略也依赖于父子关系来确定焦点顺序。
因此,在 MyPushButton 类中创建一个 QPushButton 实例并将其添加到窗口时,传递 self 作为父对象是至关重要的,它确保了按钮能够正常工作并集成到窗口中。
如果不传递父对象,QPushButton 将无法正确地与窗口交互,也无法利用Qt框架提供的各种功能。from PySide6.QtWidgets import QApplication, QLabel
app = QApplication([])
label = QLabel('Label Text 这是一个标签')
label.setToolTip('Tip Info 这是标签的提示信息')
label.show()
app.exec()
from PySide6.QtWidgets import QApplication, QLabel, QMainWindow
class MyLabel(QMainWindow):
def __init__(self):
super().__init__()
QLabel('MyLabel', self).setToolTip('我的自定义 label 实例')
if __name__ == '__main__':
app = QApplication()
button = MyLabel()
button.show()
app.exec()
from PySide6.QtWidgets import QApplication, QLineEdit
app = QApplication([])
window = QLineEdit()
window.setWindowTitle('LineEdit 输入框')
window.setPlaceholderText('请输入内容')
window.show()
app.exec()
from PySide6.QtWidgets import QApplication, QLineEdit, QMainWindow
class MyLineEdit(QMainWindow):
def __init__(self):
super().__init__()
ins = QLineEdit(self)
ins.setPlaceholderText('请输入内容')
if __name__ == '__main__':
app = QApplication()
line_edit = MyLineEdit()
line_edit.setWindowTitle('QLineEdit 输入框')
line_edit.show()
app.exec()
对于以下代码:
from PySide6.QtWidgets import QApplication, QLineEdit, QMainWindow
class MyLineEdit(QMainWindow):
def __init__(self):
super().__init__()
ins = QLineEdit(self)
ins.setPlaceholderText('请输入内容')
# 这里的标题不会生效!!!
ins.setWindowTitle('QLineEdit 输入框')
if __name__ == '__main__':
app = QApplication()
line_edit = MyLineEdit()
# line_edit.setWindowTitle('QLineEdit 输入框')
line_edit.show()
app.exec()
在PySide6(以及Qt框架中),QLineEdit 是一个用于输入文本的行编辑控件,它本身并不具备显示窗口标题的能力 。在Qt中,窗口标题通常与 QMainWindow 或 QWidget 类相关联,它们是能够提供完整窗口装饰(如标题栏、边框、状态栏等)的窗口控件。
如果希望标题显示出来,需要将其设置在主窗口上,也就是 MyLineEdit 类本身,因为 QMainWindow 是具有窗口标题和完整窗口装饰的顶级窗口控件。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。