编辑Edit的属性设置


  本章是在 窗体MainWindow的属性设置后第二篇关于PyQt5的控件以及属性介绍,主要介绍编辑Tab次序、编辑信号与槽、新增界面的方法;这些界面或者代码层次都是可以实现的,不过本章基于designer.exe界面进行编辑。

1.编辑Tab次序

  ①从Edit选中编辑Tab顺序:

  ②主界面显示数字表示我们按Tab键时光标跳动的顺序;修改顺序依次点击

  ③退出编辑Tab次序,只需点击编辑窗口控件按钮:

2.编辑信号与槽

(1)同个界面

A.拖拽

  ①从Edit选中编辑信号/槽:

  ②主界面切换到编辑信号/槽格式:

  ③例如:
  选中pushButton作为发射者,拖住不动会有一个下三角标志:

  移到TextLabel上将其作为接收者,会弹出“配置连接”窗口:

  在“配置连接”窗口左右两侧选择对应的信号,这里按钮选择单击clicked(),标签选择隐藏hide():

  这样就实现了单机按钮,标签隐藏的作用。
  完成配置连接后,退出编辑信号/槽界面,只需点击编辑窗口控件按钮:

  未点击按钮前:

  点击按钮后:

B.使用信号/槽编辑器

  ①在界面右下方“信号/槽编辑器”选项卡:

  ②点击上方的绿色加号实现添加信号/槽,点击上方的红色减号实现添加信号/槽:

  ③信号是指发送者的动作,槽是指接收者的动作。
  例:设置点击“清空”按钮后可以将姓名、性别、专业后面的编辑框内容清空

  预览:
  文本编辑框未输入内容:

  文本编辑框输入内容:

  点击“清空”按钮:

(2)不同界面

1.发送界面

from PyQt5.QtCore import pyqtSignal

class Ui_Form(QtWidgets.QMainWindow):
    signal = pyqtSignal(int)  ####
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 95)

        self.lineEdit.editingFinished.connect(self.emit_signal)  ####

    def emit_signal(self):  ####
        dataint = int(self.lineEdit.text())
        self.signal.emit(dataint)

2.接收界面(主界面)

window1.show()
window1.signal.connect(self.zifuhouyi_weishu_2)  

def zifuhouyi_weishu_2(self,dataint):
    global zifu
    n=dataint

  注:显示哪个界面,哪个界面后接signal

检测另一界面关闭

  主界面:

tanwin.closed.connect(self.tanwin_delete)

  另一界面(重写closeEvent函数):

class tanchuang_win(QMainWindow,window2):
    closed = pyqtSignal()

def closeEvent(self, event):
    	self.closed.emit()
    	event.accept()

3.新增界面

(1)第一种方法

  ①生成的Form文件显示的是:

class Ui_Form(object):
    def setupUi(self, Form):

  将object改成QtWidgets.QMainWindow
  ②在main文件中引用:

from message_dpi import Ui_Form

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mywin = Window()
    dpi_window=Ui_Form()
    mywin.show()
    sys.exit(app.exec_())

(2)第二种方法

  不更改生成的Form文件,只在main文件中新创一个类

from message_dpi import Ui_Form

class dpi_Window(Ui_Form,QMainWindow):
    def __init__(self):
        super(dpi_Window, self).__init__()
        self.setupUi(self)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mywin = Window()
    dpi_window=dpi_Window()
    mywin.show()
    sys.exit(app.exec_())

  优先采用这种方式:如禁用最大最小化采用第一种方式无效,这种方式把Form看作主窗体可以执行除了菜单栏和状态栏的其他操作
  这种方式下还可以在主窗口控制显示的其他窗口的控件
  (只不过需要指明是哪个窗口而不是使用self关键字)
  例:

add_window.add_size.clear()
add_window.add_kernel.clear()
add_window.close()
对不起,我之前的回答有误。对于`ProTable`和`EditableTableProTable`来说,它们并没有直接提供一个名为`edit`的属性来控制整个表格始终处于编辑状态。但是,如果你想要实现类似的功能,你可以尝试以下几种方式: - **手动启用编辑功能**: 虽然没有全局的`edit`开关,但你可以为每一行单独启用编辑。每个表格行都是一个独立的`Form`组件,你可以将`Form`包裹在`<tbody>`内的每个`<tr>`元素上。 ```jsx import Form from 'antd/lib/form'; <ProTable> <Form.Item key="rowKey" formItemLayout="horizontal"> {/* 表格列内容 */} </Form.Item> </ProTable> ``` - **监听行点击事件**: 当用户点击一行时,你可以切换该行的`Form`组件的编辑状态。可以使用`onRowClick`回调或`onContextMenu`等事件来实现。 ```jsx <ProTable onRowClick={(record) => this.handleEdit(record)}> {/* ... */} </ProTable> handleEdit(record) { this.form.setFieldsValue({ /* 设置表单值为record数据 */ }); this.form.setSubmitting(true); // 开始编辑 } ``` 请注意,这样的做法会使得代码变得复杂,不太适合大规模的数据表格。如果需要持续的编辑体验,可能需要考虑使用专门的数据管理库或者调整UI设计以适应这种需求。 **相关问题--:** 1. 如何在`EditableTable`中实现逐行编辑而不是全选? 2. `ProTable`如何结合React的状态管理工具来跟踪表单状态? 3. 在`ProTable`中如何避免用户误触关闭编辑功能?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值