С выражением внутри функций - PullRequest
0 голосов
/ 04 августа 2020

Итак, я не могу запустить код внутри функции Display_File. Все, что он делает, - это кричать о плохих отступах, слишком много или недостаточно. Я перепробовал все возможные отступы, но ничего не работает. Я предполагаю, что не могу использовать оператор with внутри функции. Я использую этот код вне функции, и он работает fantasti c.

Просто пытаюсь открыть файл CSV, удалить часть мусора над заголовками и загрузить его в текстовое поле и, в конечном итоге, создать диаграмму с данными после того, как я смогу хотя бы правильно отобразить данные в GUI. Я попытался поместить код отображаемого файла в код открытого файла, но там ничего не получилось, поэтому решил, что ему нужна собственная функция. Меня не волнует, где он, пока эта чертова штука работает.

Еще нет какого-то кода, чтобы сделать то, о чем я упоминал. Мне просто нужно это, чтобы бегать, ни о чем не кричать, и я буду счастлив.

import pandas as pd
import tkinter as tk
from tkinter import filedialog, Text
from tkinter import messagebox
import os

#Create GUI Window
app = tk.Tk()
app.geometry('800x800')
app.title("TTF Data Files")
app.configure(bg='#263D42')


#Functions
def open_File():
    global filename
    filename = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("Data files","*.dat"),("all files","*.*")))

def display_file():

    skipcnt = 0
    with open(filename) as f:  # auto closes after loop
        for row in f:
        skipcnt += 1
        if "Tension" in row and "Elong" in row:  # top of header
        break;
    
    skipcnt += 3  # skip headers
    
    df = pd.read_csv(myfile, skiprows=skipcnt , delimiter='\t')    
    

textArea = tk.Text(app, height=45, width=100, wrap=tk.WORD)
textArea.pack(expand=True)

#Buttons!
button = tk.Button(app, text = "Open File", command=open_File)
button.pack()

button = tk.Button(app, text = "Display File", command=display_file)
button.pack()

app.mainloop()

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Он кричит об отступе, потому что ваш for-l oop и if-statement не имеют отступа:

def display_file():
    skipcnt = 0
    with open(filename) as f:  # auto closes after loop
        for row in f:
            skipcnt += 1
            if "Tension" in row and "Elong" in row:  # top of header
                break; 
    skipcnt += 3  # skip headers
    df = pd.read_csv(myfile, skiprows=skipcnt , delimiter='\t') 
0 голосов
/ 04 августа 2020

Кажется, что часть вашего кода имеет неправильный отступ. Эта часть

    with open(filename) as f:  # auto closes after loop
        for row in f:
        skipcnt += 1
        if "Tension" in row and "Elong" in row:  # top of header
        break;

имеет для l oop, где ничего в for l oop не имеет отступа. Поправил, будет так

    with open(filename) as f:  # auto closes after loop
        for row in f:
            skipcnt += 1
            if "Tension" in row and "Elong" in row:  # top of header
                break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...