yc0526vip 发表于 2023-12-4 17:39:18

tkinter问题

本帖最后由 yc0526vip 于 2023-12-5 15:37 编辑

这段代码,为啥执行到11行就停了

from tkinter import filedialog
import pandas as pd


def engineeringparameters():
    file_path = filedialog.askopenfilename()
    ep = pd.read_csv(file_path, encoding='gbk', usecols=)

    ep = ep.loc.isin(["460-01"])]
    ep['ECI'] = ep['gNBId'].map(str) + "-" + ep['cellLocalId'].map(str)
    print(ep)
#到这里就停了,不再继续执行下面的
    file_path = filedialog.askopenfilename()
    quality = pd.read_excel(file_path, sheet_name="Sheet0")
    print(quality)


engineeringparameters()


FishC_GPT 发表于 2023-12-4 17:40:04

在您的代码中,问题可能出现在多个地方。首先,11行代码的 `usecols=` 后面没有具体的内容,这将导致语法错误。`usecols` 参数是用来指定从 CSV 文件中读取哪些列的。如果您想要读取所有的列,可以省略这个参数;如果只想读取某几列,需要提供列名或者列的索引列表。

其次,`ep.isin()` 函数调用中也没有提供必要的参数。`isin` 通常用于筛选出 DataFrame 中的值,属于一组值的行,它需要一个列表、系列或DataFrame作为参数。

再次,`ep.map(str)` 这部分代码意图显得不明确,因为它尝试将整个 DataFrame 的每个元素都映射为字符串,并进行拼接。通常我们不会对整个 DataFrame 进行这样的操作,而是对特定的 Series(也就是 DataFrame 的单个列)进行操作。

在 `filedialog.askopenfilename()` 的两次调用之间,并没有任何代码会导致显著的停顿或中断。但是,如果出现错误,Python 程序通常会停止执行并显示错误消息。如果没有错误消息,并且程序“停止”,可能是因为打开文件对话框时不小心把它移出屏幕外或者它被其他窗口遮挡了。

为了修复和改进您的代码,我将提供一个修改后的版本,但是我需要做一些假设来填充缺失的部分,因为原始代码提供的信息不足:

from tkinter import filedialog
import pandas as pd


def engineeringparameters():
    # 第一次打开文件对话框并读取 CSV 文件
    file_path = filedialog.askopenfilename()
    if not file_path:# 如果用户取消选择文件,file_path 将为空字符串
      return

    # 假设我们读取所有列,省略 usecols 参数
    ep = pd.read_csv(file_path, encoding='gbk')

    # 假设筛选操作是基于某些条件,这里需要填充正确的条件和列名
    # 例如筛选 'ColumnA' 列中值为 'some_value' 的行
    # ep = ep == 'some_value']

    # 假设拼接操作是针对特定的两列进行的
    # 这里需要你提供正确的列名,例如 'ColumnA' 和 'ColumnB'
    # ep['CombinedColumn'] = ep['ColumnA'].map(str) + "-" + ep['ColumnB'].map(str)
    print(ep)

    # 第二次打开文件对话框并读取 Excel 文件
    file_path = filedialog.askopenfilename()
    if not file_path:# 如果用户取消选择文件,file_path 将为空字符串
      return

    # 假设 Excel 文件中有名为 "Sheet0" 的工作表
    quality = pd.read_excel(file_path, sheet_name="Sheet0")
    print(quality)


engineeringparameters()

请根据您的实际情况替换注释中提到的列名和条件。希望这个修改后的代码可以帮助您解决问题。如果程序仍然在执行后停止,可能是因为遇到了错误或异常,这时候请检查控制台输出,查看是否有错误信息,并根据错误信息进行相应的调试。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

yc0526vip 发表于 2023-12-4 17:47:30

from tkinter import filedialog
import pandas as pd


def engineeringparameters():
    file_path = filedialog.askopenfilename()
    ep = pd.read_csv(file_path, encoding='gbk')
    print(ep)

    file_path = filedialog.askopenfilename()
    quality = pd.read_excel(file_path, sheet_name="Sheet0")
    print(quality)


engineeringparameters()

不能完全执行

FishC_GPT 发表于 2023-12-4 17:48:11

yc0526vip 发表于 2023-12-04 17:47
from tkinter import filedialog
import pandas as p ...

您的代码看起来结构上是没有问题的,可能出现的问题是:

1. 如果您的编程环境中没有正确安装 pandas 包,那么这会导致导入错误。
2. 如果文件对话框被意外关闭或隐藏,会看起来像是程序停止了。
3. 如果选择的文件不能被正确读取,比如文件编码不是 'gbk',或者Excel文件没有名为 'Sheet0' 的工作表,也会导致程序停止。

要确保程序能正确地执行下去,请尝试以下步骤:

- 确保 pandas 已安装。可以在命令行输入以下命令来安装 pandas:
pip install pandas
- 确保运行代码时是在图形用户界面环境,特别是如果你是在一些IDE或者编辑器中运行代码,并确保文件对话框没有被其他窗口遮住。
- 确认选择的文件编码确实为 'gbk',如果不确定,可以改用默认的编码尝试,比如:
ep = pd.read_csv(file_path)
- 添加异常处理逻辑,以便在读取文件过程中出现错误时能够看到错误信息,并且程序能够继续执行。

下面是一个添加了异常处理的代码示例:

from tkinter import filedialog
import pandas as pd

def engineeringparameters():
    try:
      file_path = filedialog.askopenfilename()
      if file_path:# 确保用户选择了文件
            ep = pd.read_csv(file_path, encoding='gbk')
            print(ep)
      else:
            print("No file selected for CSV.")
            return
      
      file_path = filedialog.askopenfilename()
      if file_path:# 确保用户选择了文件
            quality = pd.read_excel(file_path, sheet_name="Sheet0")
            print(quality)
      else:
            print("No file selected for Excel.")
            return

    except Exception as e:
      print("An error occurred:", e)

engineeringparameters()

如果程序仍然无法完全执行,请检查控制台输出,查看是否有错误信息,并根据错误信息进一步调试程序。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

yc0526vip 发表于 2023-12-5 10:47:34

from tkinter import filedialog

file_path = filedialog.askopenfilename()
print(file_path)
sfile_path = filedialog.askopenfilename()
print(sfile_path)

执行失败

FishC_GPT 发表于 2023-12-5 10:47:57

yc0526vip 发表于 2023-12-05 10:47
from tkinter import filedialog

file_path = file ...

根据您提供的代码,有两个问题可能导致执行失败:

1. 导入模块错误:您导入 `filedialog` 模块时缺少了 `tkinter` 前缀。请确保正确导入 `tkinter.filedialog` 模块。修改代码如下:

from tkinter import filedialog

file_path = filedialog.askopenfilename()
print(file_path)

sfile_path = filedialog.askopenfilename()
print(sfile_path)

2. 缺少 Tkinter 窗口:Tkinter 在运行图形界面时需要一个主窗口。您需要添加以下代码来创建一个 Tkinter 窗口并运行主循环:

import tkinter as tk
from tkinter import filedialog

def main():
    root = tk.Tk()
   
    file_path = filedialog.askopenfilename()
    print(file_path)

    sfile_path = filedialog.askopenfilename()
    print(sfile_path)
   
    root.mainloop()

if __name__ == "__main__":
    main()

通过添加这些修改,代码应该能够成功执行,并打开文件对话框以选择文件路径。请注意,当文件对话框出现时,程序会暂停执行,直到用户选择文件或关闭对话框。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

yc0526vip 发表于 2023-12-5 11:04:46

FishC_GPT 发表于 2023-12-5 10:47
根据您提供的代码,有两个问题可能导致执行失败:

1. 导入模块错误:您导入 `filedialog` 模块时缺少了...

雀食一个解决方案 {:10_254:}

FishC_GPT 发表于 2023-12-5 11:06:09

yc0526vip 发表于 2023-12-05 11:04
雀食一个解决方案 {:10_254:}

是的,我非常理解。这里是一个更简单的解决方案,可以避免使用 Tkinter:

import tkinter as tk
from tkinter import filedialog
import pandas as pd

def engineeringparameters():
    root = tk.Tk()
    root.withdraw()

    # 第一次打开文件对话框并读取 CSV 文件
    file_path = filedialog.askopenfilename()
    if not file_path:
      return

    ep = pd.read_csv(file_path, encoding='gbk')
    print(ep)

    # 第二次打开文件对话框并读取 Excel 文件
    file_path = filedialog.askopenfilename()
    if not file_path:
      return

    quality = pd.read_excel(file_path, sheet_name="Sheet0")
    print(quality)

engineeringparameters()

在这个解决方案中,我们使用了 `root = tk.Tk()` 和 `root.withdraw()` 来创建一个不可见的 Tkinter 窗口,并将其隐藏,避免影响用户的界面体验。

请注意,如果您只是想简单地选择文件路径,而不涉及到与 Tkinter 进一步交互的操作,您也可以考虑使用 Python 内置的 `input()` 函数来实现:

import pandas as pd

def engineeringparameters():
    # 第一次输入文件路径
    file_path = input("请输入CSV文件路径:")
    if not file_path:
      return

    ep = pd.read_csv(file_path, encoding='gbk')
    print(ep)

    # 第二次输入文件路径
    file_path = input("请输入Excel文件路径:")
    if not file_path:
      return

    quality = pd.read_excel(file_path, sheet_name="Sheet0")
    print(quality)

engineeringparameters()

这个版本利用了 `input()` 函数,用户可以直接在命令行中输入文件路径,不需要打开文件对话框。但请注意,这种方法对于文件选择的验证和错误处理比较有限,用户需要手动输入文件路径时需要小心。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: tkinter问题