sinat_21844849 2018-07-10 03:01 采纳率: 33.3%
浏览 6241
已结题

Python怎样将这样的界面与后台代码交互?

界面用pyqt画的,导成了py文件,后台代码是抓数据库并且绘图的图片说明

GUI界面部分

from PyQt5 import QtCore, QtGui, QtWidgets
import sys
class Ui_ANOVAWindow(object):
    def setupUi(self, ANOVAWindow):
        ANOVAWindow.setObjectName("ANOVAWindow")
        ANOVAWindow.resize(781, 462)
        self.label = QtWidgets.QLabel(ANOVAWindow)
        self.label.setGeometry(QtCore.QRect(30, 30, 71, 31))
        self.label.setMinimumSize(QtCore.QSize(71, 31))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(ANOVAWindow)
        self.label_2.setGeometry(QtCore.QRect(30, 70, 71, 31))
        self.label_2.setMinimumSize(QtCore.QSize(71, 31))
        self.label_2.setObjectName("label_2")
        self.KeywordBox = QtWidgets.QLineEdit(ANOVAWindow)
        self.KeywordBox.setGeometry(QtCore.QRect(130, 40, 113, 20))
        self.KeywordBox.setObjectName("KeywordBox")
        self.DataCButton = QtWidgets.QPushButton(ANOVAWindow)
        self.DataCButton.setGeometry(QtCore.QRect(70, 120, 121, 31))
        self.DataCButton.setObjectName("DataCButton")
        self.label_3 = QtWidgets.QLabel(ANOVAWindow)
        self.label_3.setGeometry(QtCore.QRect(30, 190, 71, 31))
        self.label_3.setMinimumSize(QtCore.QSize(71, 31))
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(ANOVAWindow)
        self.label_4.setGeometry(QtCore.QRect(30, 230, 71, 31))
        self.label_4.setMinimumSize(QtCore.QSize(71, 31))
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(ANOVAWindow)
        self.label_5.setGeometry(QtCore.QRect(0, 270, 101, 31))
        self.label_5.setMinimumSize(QtCore.QSize(71, 31))
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(ANOVAWindow)
        self.label_6.setGeometry(QtCore.QRect(30, 310, 71, 31))
        self.label_6.setMinimumSize(QtCore.QSize(71, 31))
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(ANOVAWindow)
        self.label_7.setGeometry(QtCore.QRect(30, 350, 71, 31))
        self.label_7.setMinimumSize(QtCore.QSize(71, 31))
        self.label_7.setObjectName("label_7")
        self.RotueBox = QtWidgets.QLineEdit(ANOVAWindow)
        self.RotueBox.setGeometry(QtCore.QRect(130, 200, 113, 20))
        self.RotueBox.setObjectName("RotueBox")
        self.LineBox = QtWidgets.QLineEdit(ANOVAWindow)
        self.LineBox.setGeometry(QtCore.QRect(130, 240, 113, 20))
        self.LineBox.setObjectName("LineBox")
        self.DefectBox = QtWidgets.QLineEdit(ANOVAWindow)
        self.DefectBox.setGeometry(QtCore.QRect(130, 280, 113, 20))
        self.DefectBox.setObjectName("DefectBox")
        self.AnovaXBox = QtWidgets.QLineEdit(ANOVAWindow)
        self.AnovaXBox.setGeometry(QtCore.QRect(130, 320, 113, 20))
        self.AnovaXBox.setObjectName("AnovaXBox")
        self.AnovaYBox = QtWidgets.QLineEdit(ANOVAWindow)
        self.AnovaYBox.setGeometry(QtCore.QRect(130, 360, 113, 20))
        self.AnovaYBox.setObjectName("AnovaYBox")
        self.VisualizeButton = QtWidgets.QPushButton(ANOVAWindow)
        self.VisualizeButton.setGeometry(QtCore.QRect(70, 400, 121, 31))
        self.VisualizeButton.setObjectName("VisualizeButton")
        self.DateBox = QtWidgets.QDateEdit(ANOVAWindow)
        self.DateBox.setGeometry(QtCore.QRect(130, 80, 111, 22))
        self.DateBox.setObjectName("DateBox")
        self.PicBox = QtWidgets.QLabel(ANOVAWindow)
        self.PicBox.setGeometry(QtCore.QRect(340, 30, 401, 371))
        self.PicBox.setText("")
        self.PicBox.setObjectName("PicBox")

        self.retranslateUi(ANOVAWindow)
        QtCore.QMetaObject.connectSlotsByName(ANOVAWindow)


    def retranslateUi(self, ANOVAWindow):
        _translate = QtCore.QCoreApplication.translate
        ANOVAWindow.setWindowTitle(_translate("ANOVAWindow", "Dialog"))
        self.label.setText(_translate("ANOVAWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">Keyword</span></p></body></html>"))
        self.label_2.setText(_translate("ANOVAWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">Date</span></p></body></html>"))
        self.DataCButton.setText(_translate("ANOVAWindow", "Data Connection"))
        self.label_3.setText(_translate("ANOVAWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">Route</span></p></body></html>"))
        self.label_4.setText(_translate("ANOVAWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">Line</span></p></body></html>"))
        self.label_5.setText(_translate("ANOVAWindow", "<html><head/><body><p><span style=\" font-size:9pt;\">Defect of interest</span></p></body></html>"))
        self.label_6.setText(_translate("ANOVAWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">ANOVA-X</span></p></body></html>"))
        self.label_7.setText(_translate("ANOVAWindow", "<html><head/><body><p><span style=\" font-size:11pt;\">ANOVA-Y</span></p></body></html>"))
        self.VisualizeButton.setText(_translate("ANOVAWindow", "Data Connection"))

if __name__ == "__main__":
    app =QtWidgets.QApplication(sys.argv)
    widget = QtWidgets.QWidget()
    Ui_ANOVAWindow().setupUi(widget)
    widget.show()
    sys.exit(app.exec_())

后台代码部分

 import psycopg2
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import re

import os
os.chdir(r'C:\Users\212712961\Desktop')

### Input ###
kw = 'RAB6-D'
mydate = '2018-04-12'
#############

print ('Collecting results using keyword %s' % kw)



# Step 1.1: Load StatisData
from wx_query import connect_acoustic
conn=connect_acoustic()
from wx_query import load_stat
df_stat = load_stat (conn, kw, mydate)


# Step 1.2: Format conversion and cleaning of the StatisData

from wx_analysis import stat_sig_conv, distinct_sn
from wx_vistools import feature_trend_lite

df_stat = stat_sig_conv(df_stat)
sn_stat_kw = distinct_sn(df_stat['sn'])

# Step 2: Load EDHR Data
from wx_query import connect_psg, load_edhrv3
conn=connect_psg()
df_edhr_full = load_edhrv3 (conn, kw, mydate)


# Step 3: Load edms for the defects

print ('loading scrap report' )
df_scrap = pd.read_csv('scrap_RAB6D_2018.csv', encoding='utf-8')

df_scrap = df_scrap.rename(columns={'S/N':'sn'})
from wx_analysis import description_mapping as dm
df_scrap['defect_category']=df_scrap['Defect'].map(dm)

sn_scrap = distinct_sn(df_scrap['sn'])
print('total edms distinct entries: %d' % len(sn_scrap))


# Step 4.0: Filtering edhr table by route_step and line_num of interest
### Input ###
route_step_name = '010'
line_number = '20'
#############

df_edhr = df_edhr_full[(df_edhr_full['route_step_name']==route_step_name) & 
                      (df_edhr_full['line_number']==line_number)]
sn_edhr_kw = distinct_sn(df_edhr['object_name'])


# Step 4.1: Filtering statsdata and edhr by joining
from wx_analysis import sn_join
dict_sn_cmp = sn_join (sn_stat_kw, sn_edhr_kw, pflag=True)
sn_scope = dict_sn_cmp ['inner']

df_stat = df_stat[df_stat['sn'].isin(sn_scope)]
df_edhr = df_edhr[df_edhr['object_name'].isin(sn_scope)]
sn_stat_kw = sn_scope
sn_edhr_kw = sn_scope


# Step 4.2: Filtering the edms with sn_scope

df_scrap_kw =df_scrap[df_scrap['sn'].isin(sn_scope)]
sn_scrap_kw = distinct_sn(df_scrap_kw['sn'])
print ('after filtering with keyword %s, %d entries left' % (kw, len(sn_scrap_kw)))

dict_sn_cmp = sn_join (sn_scope, sn_scrap_kw, pflag=True)
sn_defect = dict_sn_cmp ['inner']
sn_good = dict_sn_cmp ['left_only']


# Step 5: Visualize good from bad
df_vis = pd.merge(df_edhr, df_stat, how='inner', left_on='object_name', right_on='sn')
df_vis = pd.merge(df_vis, df_scrap_kw, how='left', left_on='object_name', right_on='sn')
df_vis.defect_category = df_vis.defect_category.fillna('NA')

### Input ###
defect_of_interest = ['NA', 'lg']
#############

df_vis_sub = df_vis[df_vis['defect_category'].isin(defect_of_interest)]

### Input: ANOVA X, Y ###                    
anovaX = 'user_name'
fields = ['fl6_mean', 'fl6_std']
fields_to_choose_from = df_vis.columns
#############

for f in fields:
    plt.figure()
    sns.stripplot (x='user_name', y=f, 
                   hue='defect_category', data=df_vis_sub, jitter=True, 
                   alpha=0.5, dodge=True, ax=plt.gca())

from wx_vistools import feature_trend_stat
feature_trend_stat (df_vis_sub, xfactor=anovaX, fields=fields, 
                        cfactor='defect_category', crange=['NA', 'lg'], ttl='')
  • 写回答

1条回答 默认 最新

  • threenewbee 2018-07-12 00:07
    关注

    没看出你的“后台”提供了什么接口和服务,它无非就是另一个py代码,谈不上“后台”。你只要import这个文件,并且调用里面的代码即可。

    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题