症状词表转化GUI

因为需要构建中医症状同义词库,需要从基本中医书籍中收集中医症状的同义词。《中医症状学研究》里包含较多同义词,可以用来收集。但是,一个个输入太慢,可以利用OCR提取文字后,再根据文本格式特点将同义词自动提出出来。于是构建一个简单的gui程序,左侧输入原始文本,右侧输出提取的同义词文本。

1、创建新项目GUI_Tongyici

症状词表转化GUI_第1张图片

2、安装pyqt5

D:\mypython\GUI_Tongyici\venv\Scripts>activate
(venv) D:\mypython\GUI_Tongyici\venv\Scripts>pip install pyqt5
(venv) D:\mypython\GUI_Tongyici\venv\Scripts>pip install pyqt5-tools
(venv) D:\mypython\GUI_Tongyici\venv\Scripts>pip install pyqt5designer

因为之前在Pycharm上配置过QtDesigner,所以此配置可以省略,如果没配置过,可以参考文章:
https://blog.csdn.net/yuanchenglei/article/details/124936528

3、设计qt界面

在项目上点击鼠标右键,找到第2步中配置好的PyQt5的QtDesigner,就会运行QtDesigner,就可以开始拖拽设计了。
症状词表转化GUI_第2张图片
症状词表转化GUI_第3张图片
但是,由于很久没使用gui编程,出现了一个小问题:拖拽过来的控件不会随着窗口大小变化自动调整!
在代码里面设置最大化,在代码里面添加布局,竟然都没有解决这个问题。于是在网上所搜了一下,发现要在QtDesigner设计中进行布局设置,而且布局不要之间拖布局进来,而是要在控件上点击右键添加布局。
在右侧的对象查看器里面,如果当前的控件有那个红色禁止的符号,说明当前没有添加布局。如下:
症状词表转化GUI_第4张图片
添加布局需要注意:不要从左侧拖拽一个布局过来,而是在当前的控件上右键后选择布局!
症状词表转化GUI_第5张图片
最终,终于得到了可以随主窗口自动调整的布局和子空间了。
症状词表转化GUI_第6张图片

4、添加事件

给转换pushbutton添加一个信号槽。

        #添加信号槽
        # self.pushButton.clicked.connect(self.plainTextEdit_2.close)
        self.pushButton.clicked.connect(self.convert)

convert是一个自定义的事件处理函数,然而, 添加的自定义信号槽后,点击“转换”按钮根本没有响应。而使用注释中的系统定义函数则没有问题。
查找了很久,完全没有没发现任何端倪。记得上一次好像也遇到了类似问题,把那个代码再看了一遍,用上次的代码,好像就有响应,区别就在main函数的调用方式上:
下面这段是点击“转换”能响应的代码:

if __name__ == '__main__':
    app = QApplication(sys.argv)
    myw = QMainWindow()
    # myWin = Ui_MainWindow().setupUi(myw) 
    myWin = Ui_MainWindow()
    myWin.setupUi(myw)
    myw.show()
    sys.exit(app.exec())

下面这个是点击“转换”按钮没有响应的代码

if __name__ == '__main__':
    app = QApplication(sys.argv)
    myw = QMainWindow()
    myWin = Ui_MainWindow().setupUi(myw)
    myw.show()
    sys.exit(app.exec())

两者的区别在于注释的那一行!是不是第一种调用方式,使得Ui_MainWindow()对象存在的生命周期与注释中调用的生命周期不一样,而导致的呢?

5、转换函数

你可能感兴趣的:(qt5)