`

pyside教程 Module_2_关闭按钮

阅读更多

 

我想下个QT designer。可是找不到。。冒是下QT Creator就行

http://qt-project.org/downloads

好吧。先装再说(d:\ide\qtcreator-2.4.1)

不行,得装QT SDK。。啊。1.7G, i am shattered

(补充:后来看到了PyQT这样一个好东西:http://www.riverbankcomputing.com/software/pyqt/download ,只要下载27.6M,就包含了QT, QT designer)

 

为什么要下。因为在看这篇文章:http://qt-project.org/wiki/PySideSimplicissimus_Module_2_CloseButton

等装好了再说吧。不知要下多久!

==

不必了。QT Designer只不过是生成了一个描述ui的xml文件。http://akabaila.pcug.org.au/pyside-data/quitter.ui

继续看,no blocker.

打开这个ui文件,发现里边定义了一个按钮,一个菜单栏,像是两行两列的布局,绑定了按钮和MainWindow。就当是给button加了ActionListener而MainWindow需要去实现这个Listener。

 

接下来把这个xml转成py,竟有此等功能#_!

pyside- uic quitter.ui - o ui_quitter.py

 

不识别的dos命令。把D:\Python27\Scripts加到System path.

好的,和教程写的一模一样

Traceback (most recent call last):
  File "D:\Python27\Scripts\pyside-uic-script.py", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

需要装setuptools:http://pypi.python.org/pypi/setuptools ,找到setuptools-0.6c11.win32-py2.7.exe

自动安装到了D:\Python27\Lib\site-packages\目录下。。。

 

再次运行

pyside- uic quitter.ui - o ui_quitter.py

咚咚,迫不及待想看看生成的ui_quitter.py是什么样子

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'quitter.ui'
#
# Created: Thu Apr 12 23:27:33 2012
#      by: pyside-uic 0.2.13 running on PySide 1.1.0
#
# WARNING! All changes made in this file will be lost!

from PySide import QtCore, QtGui

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(526, 277)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtGui.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        spacerItem = QtGui.QSpacerItem(420, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 0, 0, 1, 1)
        self.quitButton = QtGui.QPushButton(self.centralwidget)
        self.quitButton.setObjectName("quitButton")
        self.gridLayout.addWidget(self.quitButton, 0, 1, 1, 1)
        spacerItem1 = QtGui.QSpacerItem(20, 165, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        self.gridLayout.addItem(spacerItem1, 1, 1, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 526, 29))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QObject.connect(self.quitButton, QtCore.SIGNAL("clicked()"), MainWindow.close)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.quitButton.setText(QtGui.QApplication.translate("MainWindow", "&Quit", None, QtGui.QApplication.UnicodeUTF8))

 

原来pyside-uic是个代码生成工具,根据xml配置生成一个有头有脸的python类。明白了

 

 

 

主程序从自动生成的类继承而来:

#!/usr/bin/env python
# quitter.py - provide a button to quit this "program"

import sys

from PySide.QtGui import QMainWindow, QPushButton, QApplication
 
from ui_quitter import Ui_MainWindow

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    frame = MainWindow()
    frame.show()    
    app.exec_()
 

跑一下。


 

为什么没写任何代码。点button就可以关闭, 文章指出

The reason for its absence is that it has been created on the Qt Designer , which has a signal-slot editor. We used it surreptitiously(偷偷地) to connect PushButton.click() “signal” to MainWindow.close() “slot”. It is imbedded in the quitter.ui file and following the conversion, in the ui_quitter.py file. And from that file, we imported Ui_MainWindow class, which is one of the ancestors of our MainWindow class. We use Python’s multiple inheritance to facilitate use of methods in the ui_quitter.py module.

 

最后,结束之前让我再看一眼生成的xml代码(quitter.ui)

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>526</width>
    <height>277</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QGridLayout" name="gridLayout">
    <item row="0" column="0">
     <spacer name="horizontalSpacer">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
      <property name="sizeHint" stdset="0">
       <size>
        <width>420</width>
        <height>20</height>
       </size>
      </property>
     </spacer>
    </item>
    <item row="0" column="1">
     <widget class="QPushButton" name="quitButton">
      <property name="text">
       <string>&amp;Quit</string>
      </property>
     </widget>
    </item>
    <item row="1" column="1">
     <spacer name="verticalSpacer">
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
      <property name="sizeHint" stdset="0">
       <size>
        <width>20</width>
        <height>165</height>
       </size>
      </property>
     </spacer>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>526</width>
     <height>29</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>quitButton</sender>
   <signal>clicked()</signal>
   <receiver>MainWindow</receiver>
   <slot>close()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>479</x>
     <y>52</y>
    </hint>
    <hint type="destinationlabel">
     <x>262</x>
     <y>138</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
 

 

 

 

 

  • 大小: 7.1 KB
分享到:
评论

相关推荐

    PySide学习教程_计算机软件及应用_IT计算机_专业资料.pdf

    PySide学习教程_计算机软件及应用_IT计算机_专业资料.pdf

    3d_pyside2_qt3d_sssssss11111_QT_3d_

    在给定的压缩包文件中,虽然没有具体的代码示例,但根据文件名"3d_pyside2_qt3d_sssssss11111_QT_3d_",我们可以推测其中可能包含了使用Pyside2和Qt3D创建3D项目的资源和代码片段。为了深入了解和学习,你需要解压...

    一个简单的基于_Python3_、_PySide6_和_Mutagen_的音乐元数据编辑器。_haku-thtagger.zip

    一个简单的基于_Python3_、_PySide6_和_Mutagen_的音乐元数据编辑器。_haku-thtagger

    PySide教程

    **PySide教程** PySide是Python的一个库,用于与Qt库进行交互,Qt是一个功能强大的跨平台用户界面工具包,支持多种操作系统,如Windows、Linux和macOS。PySide为Python程序员提供了Qt的所有功能,使得在Python中...

    PySide2.7_downcc.zip

    《PySide2与Python图形界面开发详解》 PySide2是Qt公司官方支持的一个Python绑定库,用于在Python环境中开发图形用户界面...对于初学者,可以参考官方文档、教程和示例代码,逐步掌握PySide2的精髓,提升GUI开发能力。

    Python的GUI框架PySide的安装配置教程

    ### Python的GUI框架PySide的安装配置教程 #### 一、引言 Python作为一种流行的编程语言,被广泛应用于多种领域,其中包括图形用户界面(GUI)的开发。Python自带了一个名为Tkinter的GUI模块,但它的界面设计较为老...

    基于yolov5_7.0 pyside6 active_learning 开发的人工智能主动学习外周血细胞目标检测系统.zip

    不满足条件2或条件3,则认为是False Positive(FP)。当对应同一个真值有多个预测结果时,只有最高置信度分数的预测结果被认为是True Positive,其余被认为是False Positive。 Precision和Recall的概念如下图所示:...

    YOLOv8的Pyside6可视化界面

    PySide6:PySide6 是 Qt for Python 的官方绑定,提供了创建图形用户界面所需的所有工具和类。 YOLO 模型:选择一个 YOLO 版本(如 YOLOv3、YOLOv4 或 YOLOv5),并使用预训练的模型或自己训练的模型。 项目结构:...

    基于yolov5_7.0 pyside6 active_learning 开发的人工智能主动学习外周血细胞目标检测系统(毕设&课

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助...

    【Pyside资源】 Pyside2 中嵌入 Matplotlib 实现画图功能

    Pyside2 是一个用于创建跨平台桌面应用程序的 Python 库,它是 Qt for Python 的官方绑定。Matplotlib 是一个用于绘制图形和可视化数据的 Python 库。将 Matplotlib 嵌入到Pyside2应用程序中,可以让您创建具有丰富...

    Pyside2 aarch64,Python3.8

    适用于linux系统(ubuntu)等,架构aarch64,直接使用...Pyside2 aarch64,Python3.8Pyside2 aarch64,Python3.8Pyside2 aarch64,Python3.8Pyside2 aarch64,Python3.8Pyside2 aarch64,Python3.8Pyside2 aarch64,

    Pyside6环形进度条Qt Designer UI文件

    Pyside6环形进度条Qt Designer UI文件

    pyside2 显示进度条

    在PySide2中,显示进度条是用户界面(UI)编程的一个重要方面,尤其是在执行耗时操作时,为用户提供反馈是非常必要的。PySide2是Qt库的Python绑定,提供了丰富的UI组件和功能,包括进度条。QThread是Qt中的一个关键...

    pyside2调用子窗口

    在Python的GUI编程中,PySide2(与PyQt5相当)是一个常用的选择,它提供了对Qt库的Python绑定,让我们能够创建丰富的图形用户界面。本篇将详细讲解如何在PySide2中调用子窗口。 首先,我们需要了解窗口系统的基本...

    【Pyside资源】基于openpyxl和PySide2模块实现的Excel操作通用类

    基于openpyxl和PySide2模块实现的Excel操作通用类,包括以下方法: 1、f_readExcel(self, table_widget, file_path, sheet_index=0):读取Excel文件内容显示在QTableWidget; 2、f_saveExcel(self, table_widget, ...

    pyside2官方说明文档.zip

    《PySide2官方说明文档》是Python开发者们深入学习PySide2库的重要参考资料。PySide2是Qt库的Python绑定,它提供了丰富的图形用户界面(GUI)开发工具,支持跨平台应用开发。Qt库以其高效、强大且灵活的特性,在桌面...

    Qt Pyside2实现程序自定义安装+卸载

    在实际开发过程中,`PySide2_Installer`和`PySide2_Uninstaller`可能是包含上述功能的Python脚本或模块。这两个文件应分别处理安装和卸载逻辑,同时可能包含了界面设计和资源管理的部分。 总结起来,使用Qt的Pyside...

    PySide2_sample

    **PySide2样本详解** ...在PySide2_sample-main这个压缩包中,可能包含了更复杂的示例代码,供开发者进一步学习和参考。通过解压文件,可以查看和运行这些示例,从而更好地理解PySide2的实际应用。

    python学习之pyside2(csdn)————程序.pdf

    PySide2提供了一系列丰富的组件,如按钮(QPushButton)、标签(QLabel)、输入框(QLineEdit)、列表视图(QListView)等。在示例代码中,我们看到`QPushButton`的用法,包括设置文字、连接点击事件和设定固定尺寸...

    pyside2自定义美观窗口ui样式(暗夜黑)

    # pyside2自定义美观窗口ui样式(暗夜黑) 1. 去除系统自带边框; 2. 设置窗口圆角、窗口描边、窗口阴影; 3. 设置窗口可任意拖动; 4. 添加最小化、最大化、关闭按钮; 5. 双击标题栏可最大化/还原; 6. 最大化状态...

Global site tag (gtag.js) - Google Analytics