- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在编写一个界面,它将自动执行一些步骤数据分析。该代码涉及将用于不同功能的多个屏幕。我写的第一个是EDA(探索性数据分析)屏幕。该代码有效,但会生成报告,然后关闭 Tk 窗口。
具体来说,当我生成报告时,代码会生成报告然后关闭。我没有把代码生成放在那里,因为它不使用 Tkinter。还忽略了其他屏幕,因为它们没有问题,而且我不想将整个项目转储在这里。
import HTMLCreator as sv
from tkinter import *
import tkinter.filedialog
import time
import pandas as pd
import Credentials as cred
import os
class EDAScreen(Page):
def __init__(self, *args, **kwargs):
Page.__init__(self, *args, **kwargs)
self.fields = ['First X Column Name', 'Last X Column Name', 'First Y Column name','Last Y Column Name']
self.entries = []
self.df=""
self.things=[]
self.description = "Automate EDA for a Dataset"
self.instructions = "Upload the CSV file with all the data"
self.descriptionLabel = Label(self, text = self.description, font=("System", 13)).place(x = 140, y = 150)
self.instructionsLabel = Label(self, text = self.instructions, font=("System", 13)).place(x = 190, y =180)
self.genResultButton = Button(self, text = "Upload input file", font=("Arial", 18), command = self.open).place(x = 290, y = 230)
self.edaButton=Button(self, text = "Generate Report", font=("Arial", 18), command = self.EDA).place(x = 290, y = 330)
# root.config(background='gray')
for ndex, field in enumerate(self.fields):
Label(self, width=20, text=field, anchor='w').grid(row=ndex, column=0, sticky='ew')
self.entries.append(Entry(self))
self.entries[-1].grid(row=ndex, column=1, sticky='ew')
Button(self, text='Set these Params', command=self.fetch).grid(row=len(self.fields)+1, column=1, sticky='ew')
def fetch(self):
for ndex, entry in enumerate(self.entries):
print('{}: {}'.format(self.fields[ndex], entry.get()))
self.things.append(entry.get())
def EDA(self):
sv.createHTML(self.df,self.things[:2],self.things[2:])
# Get the prediction answer by searching for file
def open(self):
filename = tkinter.filedialog.askopenfilename(parent=self,initialdir = "./",title = "Select file",filetypes = (("data files","*.csv"),("all files","*.*")))
print(filename)
self.df=pd.read_csv(filename)
cols=self.df.columns.values
print(cols)
try:
os.mkdir("./Breakdowns")
except :
pass
# print("Things: ",things)
#iv.processImg(r,'jpg')
当您没有主循环时,这似乎是一个问题。然而,我确实有一个定义为:
if __name__ == "__main__":
root = Toplevel()
root.geometry("800x500")
main = MainView(root)
main.pack(side="top", fill="both", expand=True)
root.mainloop()
其他重要的定义是
class Page(Frame):
def __init__(self, *args, **kwargs):
Frame.__init__(self, *args, **kwargs)
def show(self):
self.lift()
class MainView(Frame):
def __init__(self, *args, **kwargs):
Frame.__init__(self, *args, **kwargs)
introScreen = IntroScreen(self)
edaScreen = EDAScreen(self)
buttonFrame = Frame(self)
container = Frame(self)
buttonFrame.pack(side="top", fill="x", expand=False)
container.pack(side="top", fill="both", expand=True)
edaScreen.place(in_ = container, x = 0, y = 0, relwidth = 1, relheight = 1)
introScreen.place(in_ = container, x = 0, y = 0, relwidth = 1, relheight = 1)
introScreenButton = Button(buttonFrame, text = "Go to Intro Screen",
command = introScreen.lift, width = 30, height = 2)
edaScreenButton = Button(buttonFrame, text = "Understand your data in detail",
command = edaScreen.lift, width = 30, height = 2)
edaScreenButton.pack(side = "left")
introScreenButton.pack(side = "left")
introScreen.show()
class IntroScreen(Page):
def __init__(self, *args, **kwargs):
Page.__init__(self, *args, **kwargs)
self.backgroundImage = PhotoImage(file = "What is PD.png")
#^^ replace with something describing how to use the tool
backgroundLabel = Label(self, image = self.backgroundImage)
backgroundLabel.place(x = 0, y = 0, relwidth = 1, relheight = 1)
编辑:我的 createHTML 如下所示。它与 Tkinter(并且有效)无关。它位于一个名为 HTMLCreator 的单独文件中。整个文件都放在那里。我添加了 import 语句,以便您可以毫无问题地运行代码。
import pandas as pd
from pandas import Series
# from pygame import mixer # Load the required library
import seaborn as sns
import matplotlib.pyplot as plt
import glob
import sweetviz as sv
def createHTML(df,feature_cols,target_col):
"""
Create the HTML reports for the dataset given the names
Params:
df: dataframe passed,
feature_cols: The independent variables (what you input)
target_col: The dependent vars (what you predict)
"""
data= df
##TODO Set the y_all and target_cols in a way that they get Tk input
y_all=data.loc[:, target_col[0]:target_col[1]]
target_col_names = data.loc[:, target_col[0]:target_col[1]].columns.values
for col in target_col_names:
X_all = data.loc[:, feature_cols[0]:feature_cols[1]]
# print(y_all[col])
X_all[col]=y_all[col]
# print(X_all[col])
advert_report=""
if(len(X_all.columns.values)>50):
advert_report = sv.analyze(X_all,pairwise_analysis="off",target_feat=col)
else:
print("here")
advert_report = sv.analyze(X_all,pairwise_analysis="on",target_feat=col)
#display the report
advert_report.show_html('Breakdowns/'+col+'.html')
advert_report = sv.analyze(y_all,pairwise_analysis="on")
#display the report
advert_report.show_html('Breakdowns/Preds'+'.html')
最佳答案
在最初生成部分报告后,我确实遇到了一些问题,但是 Tk
就我而言,窗口没有关闭。
该错误与您的 HTMLCreator
中的以下几行有关文件:
if(len(X_all.columns.values)>50):
advert_report = sv.analyze(X_all,pairwise_analysis="off",target_feat=col)
else:
print("here")
advert_report = sv.analyze(X_all,pairwise_analysis="on",target_feat=col)
Sweetviz
根据文档,目前仅支持 BOOLEAN 和 NUMERICAL 功能作为目标:
target_feat: A string representing the name of the feature to bemarked as "target". Only BOOLEAN and NUMERICAL features can be targetsfor now.
if(len(X_all.columns.values)>50):
advert_report = sv.analyze(X_all,pairwise_analysis="off")
else:
print("here")
advert_report = sv.analyze(X_all,pairwise_analysis="on")
然而,只传递一个数字列作为
target
仍然奇怪地抛出错误,但您可以使用
FeatureConfig
object 作为强制数字列目标的变通方法,如果列不是数字类型,您仍然会收到错误。
feature_config = sv.FeatureConfig(force_num=col)
if(len(X_all.columns.values)>50):
advert_report = sv.analyze(X_all, pairwise_analysis="off", feat_cfg=feature_config, target_feat=col)
else:
print("here")
advert_report = sv.analyze(X_all, pairwise_analysis="on", feat_cfg=feature_config, target_feat=col)
关于python-3.x - 一次运行后 Tkinter 窗口自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63547876/
在 How to make a Tkinter window jump to the front? 中提出的问题之后的一个问题 我希望有一个顶层窗口(我用它来导航我的其他主窗口)总是在前面。但我希望它
有没有办法在 Tkinter 中保持小部件(特别是图像)的堆叠顺序一致?例如,我可能在 Canvas 上的同一位置有两个矩形、两个三角形和一个圆。圆圈移动到最后一次点击鼠标的地方,但我总是希望它被绘制
这是一个简单的 GUI 程序,用于创建 5x16 按钮矩阵。 from tkinter import * root = Tk() button = [[0 for x in range(16)] fo
有一个错误:“AttributeError: module 'tkinter' has no attribute 'messagebox'” 即使 import tkinter 一开始就已经给出了,为
我知道 menu.tk_popup() 可用于在特定坐标处打开上下文菜单,但也不知道如何从中打开子菜单,如果这有意义的话。这是我编写的代码: import tkinter as tk root = t
我正在尝试在禁用自动换行和水平滚动条的文本窗口中书写,如下所示: root = Toplevel() root.geometry("%dx%d+0+0" % (350,400)) af=Frame(r
已经将文本变量分配给小部件后,如何将其删除? widget.config(textvariable=None)只是不工作。在谷歌或这里找不到任何东西。 最佳答案 将您的变量分配给一个空字符串以实现此目
Jython 支持 Tkinter 吗?如果我用 Python 编写一个程序并放一个 使用 Tkinter 的 GUI 前端,做同样的事情有多难 Jython 中的程序?或者对于 Jython GUI
因此,我尝试创建一个 tkinter 窗口,显示当前时间和日期以及自定义短语。不过,我遇到的问题是,我似乎无法在第二天刷新日期。 我可以传递截至运行代码时的当前日期,但之后它变为静态。 这是我目前的程
我的理解是在初始化 __init__ 中的所有框架和小部件之后方法,tkinter 窗口会调整大小以适合所有这些组件。 我想将窗口的初始化大小设置为其最小大小。我希望能够最大化并放大窗口,但我从不希望
此代码仅水平居中,如何使进度条也垂直居中? import Tkinter import ttk root = Tkinter.Tk() root.geometry("=500x500") root.p
使用 Python 2.7 和 Tkinter 模块,我创建了一个菜单按钮并为其分配了一个菜单。现在每次我在特定位置发布菜单时,菜单的宽度都会根据字符数自动设置。有没有办法在菜单小部件中设置静态宽度?
我想将我的 tkinter 应用程序的主题更改为 clam。 代码是什么,我把它放在哪里?我试过了: from tkinter import * from tkinter.ttk import * s
我有以下代码: from Tkinter import * from urllib import urlretrieve import webbrowser import ttk def get_la
我知道,如果我将滚动条控制的框架绑定(bind)到函数 ( onFrameConfigure ),您可以获得滚动条位置,如下所示:self.calendar_frame.bind("", self.o
许多网站都说菜单小部件有一个选项“字体”,但我一直无法设置它。系统是在 Windows 8.1 中运行的 Python 3.5。脚本开始: 从 tkinter 导入 * 根 = Tk() root.g
我正在阅读本教程,它帮助我同时学习 tkinter 和 wxWidgets,但我想深入挖掘,所以想知道哪个 GUI 工具更适合深入学习,为什么? 最佳答案 不可能说哪个“更好”。两者均可用于最常见的用
看书学python,tkinter.END用在一段代码里不用解释 import tkinter def count(text, out_data): """ Update out_data w
我正在尝试使用 Python 2.7 将 Tkinter 导入到我的项目中,但我收到了错误: ImportError: No module named tkinter 在有人说之前,我已经尝试了“Tk
当我回答 Tkinter 问题时,我通常会尝试自己运行代码,但有时我会收到此错误: Traceback (most recent call last): File "C:\Python27\pyg
我是一名优秀的程序员,十分优秀!