Python之PyQt的使用

本文详细介绍了如何利用 PyQt 框架实现与 NAO 机器人项目的交互界面,包括文件管理、按钮触发事件及文本显示功能。通过自定义类 MyForm 实现了对 NAO 项目的操作,包括文件名添加到 ActionBox 和 AudioBox,并在确认按钮触发时追加当前选中方案。此外,通过循环读取文件目录并将其文件名添加到界面元素中,实现了项目的选择与展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

main.py

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

import sys
import os
import re   
import time
from PyQt4 import QtCore, QtGui   
from ui_nao import Ui_Form 
from file_nao import file_name

def update_textBrowser(self):
        self.textBrowser.append(self.ActionBox.currentText())

class MyForm(QtGui.QMainWindow):   
    def __init__(self, parent=None):   
        QtGui.QWidget.__init__(self, parent)   
        self.ui = Ui_Form()   
        self.ui.setupUi(self)

    def event_click(self,parent=None):
    #   self.ui.ConfirmBtn.setCheckable(True)
        if slef.ui.ConfirmBtn.isChecked():
            self.ui.textBrowser.append(self.ui.ActionBox.currentText())

def Main():
    file_num,list_filename,list_filefullname = file_name()
    app = QtGui.QApplication(sys.argv)   
    myapp = MyForm()   
    i = 0
    for i in range(file_num):
        myapp.ui.ActionBox.addItem(list_filename[i])
        myapp.ui.AudioBox.addItem(list_filename[i])
        i = i + 1
    #   print i
    if i == file_num:
        myapp.ui.textBrowser.append(u'目前选择的方案为\n') #追加内容
        myapp.show()
        '''
        while True:
            time.sleep(1)
            if myapp.ui.ConfirmBtn.isChecked():
                myapp.ui.textBrowser.append(myapp.ui.ActionBox.currentText()) 
        '''
    #   print myapp.ui.ActionBox.currentText()
    #   while 1:
    #       if myapp.ui.ConfirmBtn.event == True:
    #           print myapp.ui.ActionBox.currentText()
    #           myapp.ui.textBrowser.append(u'test1\n')
    #   myapp.ui.textBrowser.append(myapp.ui.ActionBox.currentText())
    #   myapp.show()
    #   if myapp.ui.ConfirmBtn.event == True:

        sys.exit(app.exec_())    # Python不仅仅要在那一行和自身对齐,还需要和后面的程序对其


if __name__ == "__main__":   # __main__是用来做当这个模块被调用之后就会不执行这个程序了 
    Main()  
    # 使用该函数之后关闭界面不会再出现意外

test_ui.py

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

# Form implementation generated from reading ui file 'test.ui'
#
# Created: Thu Jun 11 00:15:19 2015
#      by: PyQt4 UI code generator 4.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(776, 615)
        self.pushButton = QtGui.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(230, 30, 221, 91))
        self.pushButton.setObjectName(_fromUtf8("pushButton"))
        self.videoPlayer = phonon.Phonon.VideoPlayer(Form)
        self.videoPlayer.setGeometry(QtCore.QRect(70, 130, 591, 381))
        self.videoPlayer.setObjectName(_fromUtf8("videoPlayer"))

        self.retranslateUi(Form)
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), Form.close)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Form", None))
        self.pushButton.setText(_translate("Form", "PushButton", None))

from PyQt4 import phonon

file_nao.py

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

import sys
import os
import re  

def file_name():
    mydir = r'F:\Code_Practice\Python_Project\NAO_PRO'
    if os.path.isdir(mydir):
        print u'目录已经存在' , mydir , '\n'
    else:
        os.mkdir(mydir)
        print u'新建目录:' , mydir , '\n'
    pattern = re.compile(r'^(F:\\Code_Practice\\Python_Project\\NAO_PRO\\)(\w+).(\w+)')  # 正则表达式
    file_num = 0
    list_filename = []
    list_filefullname = []
    for filename in os.listdir(mydir):
        filepath = os.path.join(mydir, filename)
        if os.path.isfile(filepath):
            s1 = pattern.search(str(filepath))  
            if s1:  
                list_filename.append(s1.group(2))
                list_filefullname.append(s1.group(2)+'.'+s1.group(3))
                file_num = file_num + 1
    return file_num,list_filename,list_filefullname

其实总结起来就是在初始化的时候进行了按键的触发设置,当你进行按钮触发的时候你就会发现它启动了另外一个函数,这个函数就是你自己在class的另外地方定义的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值