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 删除。