鱼C论坛

 找回密码
 立即注册
查看: 809|回复: 35

TexeEdit录入问题求教~~

[复制链接]
发表于 2024-3-17 14:58:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 凊风 于 2024-3-17 16:23 编辑

我用的是PySide6,共有3个窗体:

  class BaseWindow(QWidget):

        ......

  class WindowA(BaseWindow):
  
        .....

   class WindowB(BaseWindow):

        .....

          def __init__(self):
                super().__init__()
                        # 设置窗体大小和背景颜色
                self.setFixedSize(1440, 900)

其中WindowB(BaseWindow)窗体有控件self.textEdit_5:
        self.textEdit_5 = QtWidgets.QTextEdit(parent=self)
        self.textEdit_5.setGeometry(QtCore.QRect(480, 250, 921, 295))
        font = QtGui.QFont()
        font.setPointSize(16)
        font.setStyleStrategy(QtGui.QFont.StyleStrategy.PreferDefault)
        self.textEdit_5.setFont(font)
        self.textEdit_5.setReadOnly(True)
        self.textEdit_5.setStyleSheet("background-color: rgb(204, 204, 204);")
        self.textEdit_5.setFrameShape(QtWidgets.QFrame.Shape.WinPanel)
        self.textEdit_5.setObjectName("textEdit_5")
        self.textEdit_5.setStyleSheet("font-family:'隶书'; font-size:17pt; line-height: 20px;")

TextEdit_5通过调用self.redirect_output把终端窗口输出内容显示到TextEdit_5中:
     # 重定向输出到TextEdit_5
        self.redirect_output(self.textEdit_5)

    def redirect_output(self, output_widget):
        class StdoutRedirect:
            def __init__(self, widget):
                self.widget = widget

            def write(self, text):
                self.widget.append(text)

            def flush(self):
                pass
        sys.stdout = StdoutRedirect(output_widget)

现需求是:让用户在TextEdit_5输出内容,且把用户录入内容储存起来,
             意思就是把TextEdit_5作为终端命令窗口来用。请问需要如何处理?

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-17 14:58:59 | 显示全部楼层
要实现将用户在TextEdit_5中输入的内容存储起来,你可以通过以下步骤来处理:

1. 创建一个按钮或者其他交互控件,当用户点击该按钮时,执行保存用户输入内容的操作。
2. 在WindowB类中添加一个保存用户输入内容的方法。该方法可以将TextEdit_5中的文本获取并保存到一个变量中。
3. 可以考虑将保存用户输入内容的方法绑定到按钮的点击事件上,这样当用户点击按钮时,就会触发保存用户输入内容的操作。

下面是一个示例代码,展示了如何实现上述需求:
class WindowB(BaseWindow):
    def __init__(self):
        super().__init__()
        self.textEdit_5 = QtWidgets.QTextEdit(parent=self)
        # 其他初始化代码...

        # 创建保存按钮
        self.save_button = QtWidgets.QPushButton("保存", parent=self)
        self.save_button.clicked.connect(self.save_user_input)

    def save_user_input(self):
        # 获取用户输入的内容
        user_input = self.textEdit_5.toPlainText()

        # 处理用户输入的内容,例如保存到文件中或者其他操作
        # 这里仅仅将用户输入的内容打印出来作为示例
        print(f"用户输入的内容: {user_input}")

在上述代码中,我们创建了一个保存按钮(save_button)并将其绑定到了save_user_input方法。当用户点击保存按钮时,save_user_input方法会被调用,将TextEdit_5中的文本获取并保存到`user_input`变量中。你可以在save_user_input方法中进行进一步处理,例如将用户输入的内容保存到文件中或者执行其他操作。

希望以上解释能对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-17 15:18:12 | 显示全部楼层
FishC 发表于 2024-3-17 14:58
要实现将用户在TextEdit_5中输入的内容存储起来,你可以通过以下步骤来处理:

1. 创建一个按钮或者其他 ...

可能我没有表达清楚:
我在的代码中, self.textEdit_5在这之前是只读的,仅仅做为一个终端的显示窗口让用户看到程序的运行动态。
   self.textEdit_5.setReadOnly(True)
   
  然后按钮3调用进程:self.pushButton_3.clicked.connect(lambda: self.start_thread('xls'))

    def start_thread(self, file_type):
      
        thread = MyThread(file_type, self.File_Path, self, self.textEdit_5)
        thread.start()

     class MyThread(threading.Thread):
   
    def __init__(self, file_type, file_path, windowB, textEdit_5):
        super().__init__()
        self.File_Type = file_type
        self.File_Path = file_path
        self.window = windowB
        self.textEdit_5 = textEdit_5

    def run(self):
        
            file_path = os.path.join(self.File_Path, file_name)
            Exclud_Book = xlrd.open_workbook(file_path)     
      
       此时self.textEdit_5就需要关闭只读属性,接受用户的录入并储存起来。
        self.textEdit_5.setReadOnly(False)      
        for sheet_name in Exclud_Book.sheet_names():           
              
            exclude_rows_input = input()
            if exclude_rows_input:
                self.exclude_rows = [int(row) - 1 for row in exclude_rows_input.split(',')]
            
            exclude_cols_input = input()
            if exclude_cols_input:
                exclude_cols = [convert_position(col) for col in exclude_cols_input.split(',')]            
            
        print(exclude_rules)

请问需要怎么处理?


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-17 15:23:39 | 显示全部楼层
凊风 发表于 2024-03-17 15:18
可能我没有表达清楚:
我在的代码中, self.textEdit ...


明白了你的需求。在代码中,你希望在特定的情况下将self.textEdit_5变为可编辑状态,以接受用户的输入并进行存储。你可以按照以下方式处理:1. 在start_thread方法中调用MyThread线程之前,将self.textEdit_5设置为可编辑状态。2. 在MyThread线程的run方法中,通过使用`self.window.textEdit_5.toPlainText()`获取用户输入的内容,并进行存储或其他操作。3. 在run方法适当的位置,将self.textEdit_5重新设置为只读状态,以便再次用作终端显示窗口。下面是更改后的代码示例:class WindowB(BaseWindow):    def __init__(self):        super().__init__()        self.textEdit_5 = QtWidgets.QTextEdit(parent=self)        # 其他初始化代码...        # 创建保存按钮        self.save_button = QtWidgets.QPushButton("保存", parent=self)        self.save_button.clicked.connect(self.save_user_input)    def start_thread(self, file_type):        # 允许TextEdit_5编辑        self.textEdit_5.setReadOnly(False)        thread = MyThread(file_type, self.File_Path, self, self.textEdit_5)        thread.start()    class MyThread(threading.Thread):        def __init__(self, file_type, file_path, windowB, textEdit_5):            super().__init__()            self.File_Type = file_type            self.File_Path = file_path            self.window = windowB            self.textEdit_5 = textEdit_5        def run(self):            file_path = os.path.join(self.File_Path, file_name)            Exclud_Book = xlrd.open_workbook(file_path)            # 获取用户输入的内容            exclude_rows_input = self.textEdit_5.toPlainText()            if exclude_rows_input:                self.exclude_rows = int(exclude_rows_input)            exclude_cols_input = self.textEdit_5.toPlainText()            if exclude_cols_input:                exclude_cols = int(exclude_cols_input)            # 其他操作...            # 将TextEdit_5重新设置为只读状态            self.textEdit_5.setReadOnly(True)在上述代码中,我们在start_thread方法中将self.textEdit_5设置为可编辑状态,使之可以接受用户的输入。然后,在MyThread线程的run方法中,使用`self.textEdit_5.toPlainText()`获取用户输入的内容并进行处理。在适当的位置,通过`self.textEdit_5.setReadOnly(True)`将self.textEdit_5重新设置为只读状态,以再次用作终端显示窗口。希望这次能更好地满足你的需求!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-17 15:29:09 | 显示全部楼层
FishC 发表于 2024-3-17 15:23
明白了你的需求。在代码中,你希望在特定的情况下将self.textEdit_5变为可编辑状态,以接受用户的输入 ...

回复请注意python格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-17 15:29:27 | 显示全部楼层
凊风 发表于 2024-03-17 15:29
回复请注意python格式


非常抱歉,我会注意Python代码格式。以下是按照正确的Python格式修改后的代码示例:
class WindowB(BaseWindow):
    def __init__(self):
        super().__init__()
        self.textEdit_5 = QtWidgets.QTextEdit(parent=self)
        # 其他初始化代码...
        # 创建保存按钮
        self.save_button = QtWidgets.QPushButton("保存", parent=self)
        self.save_button.clicked.connect(self.save_user_input)

    def start_thread(self, file_type):
        # 允许TextEdit_5编辑
        self.textEdit_5.setReadOnly(False)
        thread = MyThread(file_type, self.File_Path, self, self.textEdit_5)
        thread.start()

class MyThread(threading.Thread):
    def __init__(self, file_type, file_path, windowB, textEdit_5):
        super().__init__()
        self.File_Type = file_type
        self.File_Path = file_path
        self.window = windowB
        self.textEdit_5 = textEdit_5

    def run(self):
        file_path = os.path.join(self.File_Path, file_name)
        Exclud_Book = xlrd.open_workbook(file_path)
        # 获取用户输入的内容
        exclude_rows_input = self.textEdit_5.toPlainText()
        if exclude_rows_input:
            self.exclude_rows = int(exclude_rows_input)
        exclude_cols_input = self.textEdit_5.toPlainText()
        if exclude_cols_input:
            exclude_cols = int(exclude_cols_input)
        # 其他操作...
        # 将TextEdit_5重新设置为只读状态
        self.textEdit_5.setReadOnly(True)

非常抱歉之前的错误,希望这次能满足你的要求!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-17 15:43:21 | 显示全部楼层
FishC 发表于 2024-3-17 15:29
非常抱歉,我会注意Python代码格式。以下是按照正确的Python格式修改后的代码示例:


请问这段代码里面怎么保存用户的两次录入内容呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-17 15:43:32 | 显示全部楼层
凊风 发表于 2024-03-17 15:43
请问这段代码里面怎么保存用户的两次录入内容呢?


如果你想要保存用户两次录入的内容,你可以在WindowB类中添加一个列表变量来存储这些内容。每次保存用户输入时,将用户输入的内容添加到列表中即可。以下是修改后的代码示例:class WindowB(BaseWindow):    def __init__(self):        super().__init__()        self.textEdit_5 = QtWidgets.QTextEdit(parent=self)        # 其他初始化代码...        self.user_inputs = []        # 创建保存按钮        self.save_button = QtWidgets.QPushButton("保存", parent=self)        self.save_button.clicked.connect(self.save_user_input)    def save_user_input(self):        # 获取用户输入的内容        user_input = self.textEdit_5.toPlainText()        # 将用户输入的内容添加到列表中        self.user_inputs.append(user_input)        # 处理用户输入的内容,例如保存到文件中或者其他操作        # 这里仅仅将用户输入的内容打印出来作为示例        print(f"用户输入的内容: {user_input}")        print(f"所有用户输入的内容: {self.user_inputs}")在上面的代码中,我们添加了一个名为`user_inputs`的列表变量,用于存储用户输入的内容。在`save_user_input`方法中,获取用户输入的内容并将其添加到`user_inputs`列表中。你可以根据需求进一步处理保存的内容,例如将其保存到文件中或执行其他操作。最后,我们打印用户输入的内容和整个列表内容,以方便查看结果。希望这次回答能够解决你的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-17 15:44:20 | 显示全部楼层
FishC 发表于 2024-3-17 15:43
如果你想要保存用户两次录入的内容,你可以在WindowB类中添加一个列表变量来存储这些内容。每次保存用 ...

回复请注意python格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-17 15:44:42 | 显示全部楼层
凊风 发表于 2024-03-17 15:44
回复请注意python格式


非常抱歉,我没有按照Python的格式回答你的问题。请看下面是按照Python格式修改后的代码示例:
class WindowB(BaseWindow):
    def __init__(self):
        super().__init__()
        self.textEdit_5 = QtWidgets.QTextEdit(parent=self)
        # 其他初始化代码...
        self.user_inputs = []

        # 创建保存按钮
        self.save_button = QtWidgets.QPushButton("保存", parent=self)
        self.save_button.clicked.connect(self.save_user_input)
    
    def save_user_input(self):
        # 获取用户输入的内容
        user_input = self.textEdit_5.toPlainText()
        # 将用户输入的内容添加到列表中
        self.user_inputs.append(user_input)
        # 处理用户输入的内容,例如保存到文件中或其他操作
        # 这里仅将用户输入的内容打印出来作为示例
        print(f"用户输入的内容: {user_input}")
        print(f"所有用户输入的内容: {self.user_inputs}")

以上就是按照Python格式修改后的代码示例。再次抱歉给你带来不便,希望这次回答能够满足你的需求!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-17 16:34:20 | 显示全部楼层
FishC 发表于 2024-3-17 15:44
非常抱歉,我没有按照Python的格式回答你的问题。请看下面是按照Python格式修改后的代码示例:

我现在写的是:

class WindowB(BaseWindow):
    def __init__(self):
        super().__init__()
        self.textEdit_5 = QtWidgets.QTextEdit(parent=self)
        # 其他初始化代码...
        exclude_rules = {}

        # 绑定按钮点击事件
        self.pushButton_3.clicked.connect(lambda: self.start_thread('xls'))
   
       def start_thread(self, file_type):
        # 允许TextEdit_5编辑
        self.textEdit_5.setReadOnly(False)
        # 在 `start_thread` 方法中创建 MyThread 对象时,将 File_Path和self 作为参数传递给它:
        thread = MyThread(file_type, self.File_Path, self, self.textEdit_5,
                          self.pushButton_11, self.pushButton_12)
        thread.start()

class MyThread(threading.Thread):
    # 在 MyThread 类中,修改 `__init__` 方法,接收File_Path和window,并将其存储为实例属性:
    def __init__(self, file_type, file_path, windowB, textEdit_5, pushButton_11, pushButton_12):
        super().__init__()
        self.File_Type = file_type
        self.File_Path = file_path
        self.window = windowB
        self.textEdit_5 = textEdit_5
        self.pushButton_11 = pushButton_11
        self.pushButton_12 = pushButton_12

    def run(self):
            file_path = os.path.join(self.File_Path, file_name)
            Exclud_Book = xlrd.open_workbook(file_path)
      

        self.textEdit_5.setReadOnly(False)
        
        for sheet_name in Exclud_Book.sheet_names():
            exclude_rows = []
            exclude_rows_input = self.textEdit_5.toPlainText()
            self.pushButton_11.setEnabled(True)
            self.pushButton_12.setEnabled(True)
            
            if exclude_rows_input:
                if self.pushButton_11.clicked:
                    self.exclude_rows = [int(row) - 1 for row in exclude_rows_input.split(',')]
                elif self.pushButton_12.clicked:
                    print('请重新录入行排除规则!')
                    continue

           
            exclude_cols = []
            exclude_cols_input = self.textEdit_5.toPlainText()
            if exclude_cols_input:
                exclude_cols = [convert_position(col) for col in exclude_cols_input.split(',')]

            exclude_rules[sheet_name] = {'行': exclude_rows, '列': exclude_cols}           
                                      
        print(exclude_rules)

但执行时会报错:

Exception in thread Thread-1:
Traceback (most recent call last):
  File "D:\Tools\Python\Lib\threading.py", line 1045, in _bootstrap_inner
    self.run()
  File "D:\Python\pythonProject\20240317\xtt031703.py", line 1104, in run
    self.exclude_rows = [int(row) - 1 for row in exclude_rows_input.split(',')]
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Python\pythonProject\20240317\xtt031703.py", line 1104, in <listcomp>
    self.exclude_rows = [int(row) - 1 for row in exclude_rows_input.split(',')]
                         ^^^^^^^^
ValueError: invalid literal for int() with base 10: "尊敬的用户,欢迎您使用本系统!”

为什么报错会指向 "尊敬的用户,欢迎您使用本系统!”这一句啊,奇怪了?  请问要怎么处理?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-17 16:35:01 | 显示全部楼层
凊风 发表于 2024-03-17 16:34
我现在写的是:

class WindowB(BaseWindow):
     ...


根据你提供的代码和错误信息,看起来问题出现在以下这一段代码中:
exclude_rows_input = self.textEdit_5.toPlainText()
self.pushButton_11.setEnabled(True)
self.pushButton_12.setEnabled(True)

if exclude_rows_input:
    if self.pushButton_11.clicked:
        self.exclude_rows =
    elif self.pushButton_12.clicked:
        print('请重新录入行排除规则!')
        continue

根据错误信息,报错是由于尝试将字符串 "尊敬的用户,欢迎您使用本系统!”转换为整数时导致的。这可能是因为在 `self.exclude_rows =` 这一行的代码中缺少了一个值或一个转换为整数的逻辑。

根据你的需求,可以假设 `exclude_rows` 是一个列表,其中包含用户输入的行号。因此,需要在 `self.exclude_rows =` 这一行的代码中给它赋予一个值(例如一个空列表)。

另外,`self.pushButton_11.clicked` 和 `self.pushButton_12.clicked` 应该是方法而不是属性。你可以使用 `self.pushButton_11.isDown()` 和 `self.pushButton_12.isDown()` 来判断按钮是否被点击。

修正后的代码如下所示:
exclude_rows_input = self.textEdit_5.toPlainText()
self.pushButton_11.setEnabled(True)
self.pushButton_12.setEnabled(True)

if exclude_rows_input:
    if self.pushButton_11.isDown():
        self.exclude_rows = []
    elif self.pushButton_12.isDown():
        print('请重新录入行排除规则!')
        continue

希望以上修改能够解决你的问题。如果还有其他疑问,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-17 16:40:40 | 显示全部楼层
FishC 发表于 2024-3-17 16:35
根据你提供的代码和错误信息,看起来问题出现在以下这一段代码中:

self.exclude_rows = [int(row) - 1 for row in exclude_rows_input.split(',')]
我这一句的本意是将用户录入的行号(如1,2)转换为python能识别的(0,1)。。
之前的代码段中我也有定义的:
exclude_rules = {}
exclude_rows = []
exclude_cols = []

exclude_rules[sheet_name] = {'行': exclude_rows, '列': exclude_cols}

为什么报错会指向 "尊敬的用户,欢迎您使用本系统!”这一句啊,奇怪了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-17 16:41:00 | 显示全部楼层
凊风 发表于 2024-03-17 16:40
self.exclude_rows =
我这一句的本意是将用户录入的 ...


非常抱歉给你带来困惑。根据你提供的代码,报错实际上是发生在 `self.exclude_rows =` 这一行之前,而不是你提到的这一行。错误信息指向的文本 "尊敬的用户,欢迎您使用本系统!”是错误消息的内容,而不是引起错误的原因。

根据之前的代码段,你给出了 `exclude_rows` 的定义和初始化:`exclude_rows = []`。这表明你将 `exclude_rows` 定义为一个空列表。因此,我之前提到的代码修正是不正确的。实际上,问题可能出现在其他地方。

根据你的代码,可以看到你有一个 `file_name` 的变量,但是在前面没有找到对它进行设置的代码。这可能导致在创建文件路径 `file_path` 时出错,从而导致你看到的错误消息。

请确保在使用 `file_name` 创建文件路径之前,`file_name` 变量已经被正确地设置了。检查一下 `file_name` 的赋值部分并确保它从有效的源获取正确的值。

如果问题仍然存在,请提供更多相关的代码,以便我能够更准确地指出错误所在。谢谢!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-17 16:42:50 | 显示全部楼层
FishC 发表于 2024-3-17 16:41
非常抱歉给你带来困惑。根据你提供的代码,报错实际上是发生在 `self.exclude_rows =` 这一行之前,而 ...

file_name有定义的
            file_name = "汇总表.xls"
            # 拼接文件路径
            file_path = os.path.join(self.File_Path, file_name)
            Exclud_Book = xlrd.open_workbook(file_path)

应该不是这个问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-17 16:43:07 | 显示全部楼层
凊风 发表于 2024-03-17 16:42
file_name有定义的
            file_name = "汇总表 ...


非常抱歉给你带来困扰。我理解了你的意思,根据你提供的代码,看起来问题确实不在那个地方。 由于你提供的代码仅有一部分,并且没有完整的上下文,因此很难确定导致问题的具体原因。 但是,我可以给出一些可能导致错误的情况供你参考:

1. 检查 `exclude_rows` 变量的赋值和使用是否一致:在之前的代码中,`exclude_rows` 被定义为一个字典的值,但通过 `self.exclude_rows = ` 进行赋值时,你将其定义为空列表。确保在使用 `exclude_rows` 变量之前,其值被正确地设置为字典。

2. 检查其他变量的定义和赋值:除了 `exclude_rows` 外,还要检查其他变量(如 `exclude_cols`、`exclude_rules`、`file_name` 等)的定义和赋值是否正确。确保所有的变量都已经被正确地初始化,并且在使用它们之前没有被修改或删除。

3. 检查可能导致错误的其他代码:虽然你提供了部分代码,但错误可能出现在其他地方。请仔细检查你的代码,并确保所有的语法错误和逻辑错误都得到正确的处理。

如果问题仍然存在,我建议你提供更完整的代码以供检查,或者提供更详细的错误信息。这样我才能够更准确地指出问题所在并给出解决方案。谢谢!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-17 16:51:49 | 显示全部楼层
FishC 发表于 2024-3-17 16:43
非常抱歉给你带来困扰。我理解了你的意思,根据你提供的代码,看起来问题确实不在那个地方。 由于你提 ...

我明白了,错误出在exclude_rows_input = self.textEdit_5.toPlainText()!!

因为之前self.textEdit_5一直在做为终端的GUI显示窗口,所以现在要取用户录入的值来int()的话,就把之前self.textEdit_5显示的内容全部用来int了。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-17 16:52:10 | 显示全部楼层
凊风 发表于 2024-03-17 16:51
我明白了,错误出在exclude_rows_input = self.textEd ...


嗯,你的理解是正确的。由于之前将TextEdit_5用作终端的GUI显示窗口并重定向了输出,所以其中的内容实际上是程序的输出而不是用户的输入。因此,如果直接使用`self.textEdit_5.toPlainText()`来获取用户输入的值进行转换,会导致错误。 解决这个问题的方法是,在用户输入的时候,将其保存到一个变量中供后续使用。例如,在确定用户输入结束时,可以通过按钮点击事件或其他触发机制来执行将TextEdit_5中的文本保存到变量中的操作。然后,你可以将这个变量传递给`int()`函数来进行转换。下面是一个示例代码,展示了如何实现将用户输入的内容保存到变量中并进行转换的操作:
WindowB(BaseWindow):    def __init__(self):        super().__init__()        self.textEdit_5 = QtWidgets.QTextEdit(parent=self)        # 其他初始化代码...        self.save_button = QtWidgets.QPushButton("保存", parent=self)        self.save_button.clicked.connect(self.save_user_input)    def save_user_input(self):        user_input = self.textEdit_5.toPlainText()        try:            converted_input = int(user_input)            # 使用转换后的值进行后续操作            # ...        except ValueError:            print("无法将用户输入转换为整数")
在上述代码中,我们在`save_user_input`方法中获取用户输入的内容,并尝试将其转换为整数。如果转换成功,则可以使用`converted_input`变量进行后续操作;如果转换失败,则会捕获`ValueError`异常。你可以根据需要对尝试转换失败的情况进行处理。希望这次解释能更好地解决你的问题!如果还有其他疑问,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-17 16:56:33 | 显示全部楼层
FishC 发表于 2024-3-17 16:52
嗯,你的理解是正确的。由于之前将TextEdit_5用作终端的GUI显示窗口并重定向了输出,所以其中的内容实 ...

我现在换个self.textEdit_4中用户录入的值得来做为exclude_rows = []和exclude_cols = []试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-17 16:56:46 | 显示全部楼层
凊风 发表于 2024-03-17 16:56
我现在换个self.textEdit_4中用户录入的值得来做为exc ...


好的,你可以将之前的代码中的`self.textEdit_5`替换为`self.textEdit_4`来使用`self.textEdit_4`中用户录入的值。下面是一个示例代码,展示了如何将`self.textEdit_4`中的值作为`exclude_rows`和`exclude_cols`的输入:class WindowB(BaseWindow):    def __init__(self):        super().__init__()        self.textEdit_4 = QtWidgets.QTextEdit(parent=self)        # 其他初始化代码...        self.save_button = QtWidgets.QPushButton("保存", parent=self)        self.save_button.clicked.connect(self.save_user_input)    def save_user_input(self):        user_input = self.textEdit_4.toPlainText()        try:            # 将录入的字符串进行分割,并转换为整数列表            exclude_rows = [int(row) for row in user_input.split(',')]            exclude_cols = [int(col) for col in user_input.split(',')]                        # 使用转换后的值进行后续操作            # ...        except ValueError:            print("无法将用户输入转换为整数")在上述代码中,我们使用`self.textEdit_4.toPlainText()`获取用户输入的内容,并将其分割为逗号分隔的字符串列表。然后,我们使用列表推导式将字符串列表中的每个元素转换为整数,并将它们保存到`exclude_rows`和`exclude_cols`变量中。请注意,这里假设用户输入的是以逗号分隔的整数列表,例如"1,2,3,4"。如果用户输入的格式不符合要求,会捕获`ValueError`异常。你可以根据实际情况进行处理。希望这次的解释对你有帮助!如果还有其他疑问,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 10:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表