鱼C论坛

 找回密码
 立即注册
楼主: 凊风

PySide6求教~

  [复制链接]
 楼主| 发表于 2024-4-4 15:39:42 | 显示全部楼层
FishC 发表于 2024-4-4 15:38
这个错误是由于在使用`soup.find("table", class_="table table-striped table-bordered")`时,没有找 ...

能不能把此功能集合到第38#楼的代码中?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-4 15:40:00 | 显示全部楼层
凊风 发表于 2024-04-04 15:39
能不能把此功能集合到第38#楼的代码中?


当然可以!你可以将`crawl_data`函数的代码添加到第38楼的代码中,并在需要的地方调用该函数。以下是合并后的代码示例:import docx
from PySide6.QtWidgets import QApplication, QMainWindow, QTextEdit, QFileDialog
import requests
from bs4 import BeautifulSoup

def crawl_data(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")

    table = soup.find("table", class_="table table-striped table-bordered")
    if table:
        tbody = table.tbody
        rows = tbody.find_all("tr")

        data = []
        for row in rows:
            cells = row.find_all("td")
            row_data = []
            for cell in cells:
                row_data.append(cell.text.strip())
            data.append(row_data)

        return data
    else:
        print("未找到表格")
        return []

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Word Reader")
        self.text_edit = QTextEdit(self)
        self.setCentralWidget(self.text_edit)
        url, _ = QFileDialog.getOpenFileName(self, "选择网页文件", "", "HTML 文件 (*.html)")
        if url:
            self.read_html_file(url)

    def read_html_file(self, url):
        data = crawl_data(url)
        for row in data:
            line = " | ".join(row)
            self.text_edit.append(line)

if __name__ == "__main__":
    app = QApplication()
    window = MainWindow()
    window.show()
    app.exec()
在此示例中,我把`crawl_data`函数添加到了代码中,并在`read_html_file`函数中调用了这个函数来获取数据,并将数据逐行显示在文本编辑器中。

注意,在代码中我使用了`getOpenFileName`来选择网页文件,你可以根据实际情况进行修改。另外,由于依赖于`requests`和`bs4`库,确保你已经安装了这两个库。

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

使用道具 举报

 楼主| 发表于 2024-4-4 21:13:37 | 显示全部楼层
FishC 发表于 2024-4-4 15:40
当然可以!你可以将`crawl_data`函数的代码添加到第38楼的代码中,并在需要的地方调用该函数。以下是合 ...

请问Pyside6能不能实现当使用次数到达100次时,随机删除其中的几行代码,然后出个警告提示窗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-4 21:13:54 | 显示全部楼层
凊风 发表于 2024-04-04 21:13
请问Pyside6能不能实现当使用次数到达100次时,随机删 ...


是的,PySide6可以实现当使用次数到达一定数量时,随机删除代码行并弹出警告提示窗口。以下是一个示例代码:import randomfrom PySide6.QtWidgets import QApplication, QMainWindow, QMessageBoxclass MainWindow(QMainWindow):    def __init__(self):        super().__init__()        self.setWindowTitle("Code Randomizer")        self.counter = 0        self.max_uses = 100        self.code = [            "print('Hello, World!')",            "print('This is a test.')",            "print('Random code line 1')",            "print('Random code line 2')",            "print('Random code line 3')"        ]        self.show_warning = False        self.randomize_code()    def randomize_code(self):        if self.counter >= self.max_uses and not self.show_warning:            self.show_warning_dialog()            self.show_warning = True        if self.counter < self.max_uses:            self.counter += 1            # 随机删除代码行            lines_to_delete = random.randint(1, 3)            for _ in range(lines_to_delete):                if self.code:                    self.code.pop(random.randint(0, len(self.code)-1))            # 执行代码            for line in self.code:                exec(line)    def show_warning_dialog(self):        msg_box = QMessageBox()        msg_box.setWindowTitle("警告")        msg_box.setText("您已经到达使用次数上限!")        msg_box.setIcon(QMessageBox.Warning)        msg_box.setStandardButtons(QMessageBox.Ok)        msg_box.exec_()if __name__ == "__main__":    app = QApplication()    window = MainWindow()    app.exec()在这个示例中,代码存储在一个列表中(`self.code`)。每次执行 `randomize_code` 函数时,会检查计数器(`self.counter`)是否超过最大使用次数(`self.max_uses`)。如果超过了最大使用次数且警告窗口还没有显示过,则调用 `show_warning_dialog` 函数展示警告窗口,并将 `show_warning` 设置为 `True` 以避免多次显示警告窗口。然后,随机删除1到3行代码,并通过 `exec` 函数执行剩余的代码行。请注意,使用 `exec` 函数来执行代码是有风险的,因为它可以执行任何类型的代码。请确保只运行可信任的代码,并且仅在必要时使用 `exec` 函数。

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

使用道具 举报

 楼主| 发表于 2024-4-4 21:14:17 | 显示全部楼层
FishC 发表于 2024-4-4 21:13
是的,PySide6可以实现当使用次数到达一定数量时,随机删除代码行并弹出警告提示窗口。以下是一个示例 ...

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

使用道具 举报

发表于 2024-4-4 21:14:28 | 显示全部楼层
凊风 发表于 2024-04-04 21:14
回复请注意Python格式


抱歉,以下是更符合Python格式的代码示例:import random
from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Code Randomizer")
        self.counter = 0
        self.max_uses = 100
        self.code = [
            # 这里是您的代码行
        ]
        self.show_warning = False
        self.randomize_code()

    def randomize_code(self):
        if self.counter >= self.max_uses and not self.show_warning:
            self.show_warning_dialog()
            self.show_warning = True
        
        if self.counter < self.max_uses:
            self.counter += 1
            
            # 随机删除代码行
            lines_to_delete = random.randint(1, 3)
            for _ in range(lines_to_delete):
                if self.code:
                    self.code.pop(random.randint(0, len(self.code)-1))

            # 执行代码
            for line in self.code:
                exec(line)

    def show_warning_dialog(self):
        msg_box = QMessageBox()
        msg_box.setWindowTitle("警告")
        msg_box.setText("您已经到达使用次数上限!")
        msg_box.setIcon(QMessageBox.Warning)
        msg_box.setStandardButtons(QMessageBox.Ok)
        msg_box.exec_()

if __name__ == "__main__":
    app = QApplication()
    window = MainWindow()
    app.exec()

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

使用道具 举报

 楼主| 发表于 2024-4-4 21:24:01 | 显示全部楼层
FishC 发表于 2024-4-4 21:14
抱歉,以下是更符合Python格式的代码示例:import random
from PySide6.QtWidgets import QApplicatio ...

self.code = [
            # 这里是您的代码行
        ]   

意思要把所有的代码全放中括号里?  显然不现实啊。。。

能不能设定一个最大行数,每次要删除时从中取随机数来转换为行数来删除?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-4 21:24:16 | 显示全部楼层
凊风 发表于 2024-04-04 21:24
self.code =   

意思要把所有的代码全放中括号里 ...


是的,`self.code`这一行的作用是将代码存储在一个列表中,每个元素代表一行代码。你可以在其中添加需要执行的代码行。

对于删除代码行的部分,确实将所有代码放在一个列表中可能会导致不现实和混乱。为了解决这个问题,您可以设定一个最大行数,并通过从中取随机数的方式来选择要删除的行数。

以下是修改后的代码示例:

  1. import random
  2. from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox

  3. class MainWindow(QMainWindow):
  4.     def __init__(self):
  5.         super().__init__()
  6.         self.setWindowTitle("Code Randomizer")
  7.         self.counter = 0
  8.         self.max_uses = 100
  9.         self.code = [
  10.             "print('Hello, World!')",
  11.             "x = 10",
  12.             "y = 20",
  13.             "result = x + y",
  14.             "print(result)"
  15.         ]
  16.         self.show_warning = False
  17.         self.randomize_code()
  18.    
  19.     def randomize_code(self):
  20.         if self.counter >= self.max_uses and not self.show_warning:
  21.             self.show_warning_dialog()
  22.             self.show_warning = True
  23.         
  24.         if self.counter < self.max_uses:
  25.             self.counter += 1
  26.             
  27.             # 设定要删除的行数和行数范围
  28.             lines_to_delete = random.randint(1, min(3, len(self.code)))
  29.             line_indices = random.sample(range(len(self.code)), lines_to_delete)
  30.             
  31.             # 根据行数范围删除代码行
  32.             for index in sorted(line_indices, reverse=True):
  33.                 self.code.pop(index)
  34.             
  35.             # 执行代码
  36.             for line in self.code:
  37.                 exec(line)
  38.    
  39.     def show_warning_dialog(self):
  40.         msg_box = QMessageBox()
  41.         msg_box.setWindowTitle("警告")
  42.         msg_box.setText("您已经到达使用次数上限!")
  43.         msg_box.setIcon(QMessageBox.Warning)
  44.         msg_box.setStandardButtons(QMessageBox.Ok)
  45.         msg_box.exec_()

  46. if __name__ == "__main__":
  47.     app = QApplication()
  48.     window = MainWindow()
  49.     app.exec()
复制代码


此次更新后,我们将代码存储在一个列表中,然后通过生成要删除的行数和从中选择要删除的行数的行索引,以确保实际删除的行数不超过列表的长度。之后,我们根据行索引删除相应的代码行,并执行剩余的代码行。

请注意,这只是一个简单的示例,以演示如何从中删除随机行。对于复杂的代码和处理逻辑,可能需要更加详细和精确的操作。

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

使用道具 举报

 楼主| 发表于 2024-4-4 21:28:12 | 显示全部楼层
FishC 发表于 2024-4-4 21:24
是的,`self.code`这一行的作用是将代码存储在一个列表中,每个元素代表一行代码。你可以在其中添加需 ...

我的意思是:
能不能设定一个最大行数(比如说500)来代替self.code = [
            "print('Hello, World!')",
            "x = 10",
            "y = 20",
            "result = x + y",
            "print(result)"
        ],每次要删除时从(1-500)中取随机数来转换为行数来删除?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-4 21:28:33 | 显示全部楼层
凊风 发表于 2024-04-04 21:28
我的意思是:
能不能设定一个最大行数(比如说500) ...


非常抱歉,我之前理解有误。现在我明白了您的意思。您可以在每次操作之前生成一个行索引列表,其中包含从1到最大行数的所有行索引,然后随机选择要删除的行索引,并根据这些行索引来删除代码行。

以下是修改后的代码示例:

  1. import random
  2. from PySide6.QtWidgets import QApplication, QMainWindow

  3. class MainWindow(QMainWindow):
  4.     def __init__(self):
  5.         super().__init__()
  6.         self.setWindowTitle("Code Randomizer")
  7.         self.max_lines = 500
  8.         self.code = []
  9.         self.randomize_code()

  10.     def randomize_code(self):
  11.         if len(self.code) == 0:
  12.             # 初始化代码
  13.             for i in range(1, self.max_lines + 1):
  14.                 self.code.append(f"print('This is line {i}')")

  15.         # 生成行索引列表
  16.         line_indices = list(range(1, self.max_lines + 1))
  17.         
  18.         # 随机选择要删除的行索引
  19.         lines_to_delete = random.randint(1, min(3, len(line_indices)))
  20.         delete_indices = random.sample(line_indices, lines_to_delete)

  21.         # 根据行索引删除代码行
  22.         for index in sorted(delete_indices, reverse=True):
  23.             self.code.pop(index-1)

  24.         # 执行代码
  25.         for line in self.code:
  26.             exec(line)

  27. if __name__ == "__main__":
  28.     app = QApplication()
  29.     window = MainWindow()
  30.     app.exec()
复制代码


在代码中,我们首先将代码初始化为包含从1到最大行数的打印语句。然后,我们生成一个行索引列表,并根据需要选择要删除的行索引。接下来,我们按照行索引删除代码行,并执行剩余的代码行。

请注意,这只是一个简单的示例,以演示如何从中删除随机行。对于复杂的代码和处理逻辑,可能需要更加详细和精确的操作。

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

使用道具 举报

 楼主| 发表于 2024-4-4 21:32:51 | 显示全部楼层
FishC 发表于 2024-4-4 21:28
非常抱歉,我之前理解有误。现在我明白了您的意思。您可以在每次操作之前生成一个行索引列表,其中包含 ...

self.code = []

if len(self.code) == 0:

请问这两句代码有什么作用?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-4 21:33:03 | 显示全部楼层
凊风 发表于 2024-04-04 21:32
self.code =

if len(self.code) == 0:

请问这 ...


非常抱歉,我之前的回答存在错误。`self.code = `这句代码应该是之前遗留在回答中的一个错误代码。实际上,在这个例子中,并不需要定义一个`self.code`变量来存储代码。

以下是修正后的代码:

  1. import random
  2. from PySide6.QtWidgets import QApplication, QMainWindow

  3. class MainWindow(QMainWindow):
  4.     def __init__(self):
  5.         super().__init__()
  6.         self.setWindowTitle("Code Randomizer")
  7.         self.max_lines = 500
  8.         self.randomize_code()

  9.     def randomize_code(self):
  10.         for i in range(1, self.max_lines + 1):
  11.             line = f"print('This is line {i}')"
  12.             if random.random() >= 0.5:  # 随机决定是否删除此行
  13.                 print(line)

  14. if __name__ == "__main__":
  15.     app = QApplication()
  16.     window = MainWindow()
  17.     app.exec()
复制代码


在修正后的代码中,我们将要执行的代码直接在`randomize_code`方法中生成,并使用`random.random()`来随机决定是否打印每一行。

再次感谢您的指正,造成的困扰请您谅解。如还有其他问题,请随时提问。

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

使用道具 举报

 楼主| 发表于 2024-4-4 21:35:03 | 显示全部楼层
FishC 发表于 2024-4-4 21:33
非常抱歉,我之前的回答存在错误。`self.code = `这句代码应该是之前遗留在回答中的一个错误代码。实际 ...


这段代码中有没有随机删除代码行的功能?!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-4 21:35:26 | 显示全部楼层
凊风 发表于 2024-04-04 21:35
这段代码中有没有随机代码行的功能?!!


非常抱歉,我的回答依然有误。以下是修正后的代码示例,其中包含了随机生成代码行的功能:

  1. import random
  2. from PySide6.QtWidgets import QApplication, QMainWindow, QTextEdit

  3. class MainWindow(QMainWindow):
  4.     def __init__(self):
  5.         super().__init__()
  6.         self.setWindowTitle("Code Randomizer")
  7.         self.text_edit = QTextEdit(self)
  8.         self.setCentralWidget(self.text_edit)
  9.         self.max_lines = 10  # 设置要生成的代码行数
  10.         self.randomize_code()

  11.     def randomize_code(self):
  12.         for i in range(1, self.max_lines + 1):
  13.             line = f"print('This is line {i}')"
  14.             if random.random() >= 0.5:  # 随机决定是否删除此行
  15.                 self.text_edit.append(line)

  16. if __name__ == "__main__":
  17.     app = QApplication()
  18.     window = MainWindow()
  19.     window.show()
  20.     app.exec()
复制代码


在修正后的代码中,我们使用`QTextEdit`来显示生成的代码行。通过循环生成`self.max_lines`指定数量的代码行,并使用`random.random()`来随机决定是否将该行添加到文本编辑器中。如果随机数大于等于0.5,则添加该行;否则跳过该行。

再次感谢您的指正,我为之前的错误造成的困扰深感抱歉。如果还有其他问题,请随时提问。

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

使用道具 举报

 楼主| 发表于 2024-4-4 21:37:09 | 显示全部楼层
FishC 发表于 2024-4-4 21:35
非常抱歉,我的回答依然有误。以下是修正后的代码示例,其中包含了随机生成代码行的功能:

。。我要随机删除代码行,不是增加代码行。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-4 21:37:27 | 显示全部楼层
凊风 发表于 2024-04-04 21:37
。。我要随机删除代码行,不是增加代码行。。。。


非常抱歉,我误解了你的问题。以下是修正后的代码示例,其中包含随机删除代码行的功能:import randomfrom PySide6.QtWidgets import QApplication, QMainWindow, QTextEditclass MainWindow(QMainWindow):    def __init__(self):        super().__init__()        self.setWindowTitle("Code Randomizer")        self.text_edit = QTextEdit(self)        self.setCentralWidget(self.text_edit)        self.lines = []  # 存储代码行        self.max_lines = 10  # 设置要生成的代码行数        self.randomize_code()    def randomize_code(self):        for i in range(1, self.max_lines + 1):            line = f"print('This is line {i}')"            self.lines.append(line)        random.shuffle(self.lines)  # 随机打乱代码行        delete_indices = random.sample(range(self.max_lines), self.max_lines // 2)  # 随机选择一半的代码行进行删除        for i, line in enumerate(self.lines):            if i not in delete_indices:                self.text_edit.append(line)if __name__ == "__main__":    app = QApplication()    window = MainWindow()    window.show()    app.exec()在修正后的代码中,我们首先生成了`self.max_lines`指定数量的代码行,并存储在`self.lines`列表中。然后使用`random.shuffle()`函数对代码行进行随机打乱顺序。接下来,使用`random.sample()`函数从0到`self.max_lines-1`中随机选择一半的索引,表示要删除的代码行。最后,遍历`self.lines`列表,将不在`delete_indices`中的代码行添加到文本编辑器中进行显示。再次感谢您的指正,我为之前的错误造成的困扰深感抱歉。如果还有其他问题,请随时提问。

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

使用道具 举报

 楼主| 发表于 2024-4-4 21:37:45 | 显示全部楼层
FishC 发表于 2024-4-4 21:37
非常抱歉,我误解了你的问题。以下是修正后的代码示例,其中包含随机删除代码行的功能:import randomf ...

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

使用道具 举报

发表于 2024-4-4 21:37:58 | 显示全部楼层
凊风 发表于 2024-04-04 21:37
回复请注意Python格式


非常抱歉,以下是修正后的代码示例,其中包含随机删除代码行的功能:

  1. import random
  2. from PySide6.QtWidgets import QApplication, QMainWindow, QTextEdit

  3. class MainWindow(QMainWindow):
  4.     def __init__(self):
  5.         super().__init__()
  6.         self.setWindowTitle("Code Randomizer")
  7.         self.text_edit = QTextEdit(self)
  8.         self.setCentralWidget(self.text_edit)
  9.         self.lines = []  # 存储代码行
  10.         self.max_lines = 10  # 设置要生成的代码行数
  11.         self.randomize_code()

  12.     def randomize_code(self):
  13.         for i in range(1, self.max_lines + 1):
  14.             line = f"print('This is line {i}')"
  15.             self.lines.append(line)
  16.         random.shuffle(self.lines)  # 随机打乱代码行
  17.         delete_indices = random.sample(range(self.max_lines), self.max_lines // 2)  # 随机选择一半的代码行进行删除
  18.         for i, line in enumerate(self.lines):
  19.             if i not in delete_indices:
  20.                 self.text_edit.append(line)

  21. if __name__ == "__main__":
  22.     app = QApplication()
  23.     window = MainWindow()
  24.     window.show()
  25.     app.exec()
复制代码


在修正后的代码中,我们首先生成了`self.max_lines`指定数量的代码行,并存储在`self.lines`列表中。然后使用`random.shuffle()`函数对代码行进行随机打乱顺序。接下来,使用`random.sample()`函数从0到`self.max_lines-1`中随机选择一半的索引,表示要删除的代码行。最后,遍历`self.lines`列表,将不在`delete_indices`中的代码行添加到文本编辑器中进行显示。

再次感谢您的指正,我为之前的错误造成的困扰深感抱歉。如果还有其他问题,请随时提问。

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

使用道具 举报

 楼主| 发表于 2024-4-4 21:58:09 | 显示全部楼层
FishC 发表于 2024-4-4 21:24
是的,`self.code`这一行的作用是将代码存储在一个列表中,每个元素代表一行代码。你可以在其中添加需 ...

我发现个问题:self.counter = 0 每次退出程序后就清零了,永远达不到500次!!

要怎么实现程序结束后,self.counter 的值能够累计下来呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-4 21:58:24 | 显示全部楼层
凊风 发表于 2024-04-04 21:58
我发现个问题:self.counter = 0 每次退出程序后就清 ...


要实现程序结束后,`self.counter` 的值能够累计下来,可以将 `self.counter` 的值保存在文件中,在每次启动程序时从文件中读取并更新。以下是修改后的代码示例:

  1. import random
  2. from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox

  3. class MainWindow(QMainWindow):
  4.     def __init__(self):
  5.         super().__init__()
  6.         self.setWindowTitle("Code Randomizer")
  7.         self.code = [
  8.             # 在这里添加需要执行的代码行
  9.         ]
  10.         self.max_uses = 500
  11.         self.load_counter()

  12.     def load_counter(self):
  13.         try:
  14.             with open("counter.txt", "r") as file:
  15.                 self.counter = int(file.read())
  16.         except FileNotFoundError:
  17.             self.counter = 0

  18.     def save_counter(self):
  19.         with open("counter.txt", "w") as file:
  20.             file.write(str(self.counter))

  21.     def randomize_code(self):
  22.         if self.counter >= self.max_uses:
  23.             self.show_warning_dialog()
  24.             return

  25.         self.counter += 1

  26.         # 设定要删除的行数和行数范围
  27.         lines_to_delete = random.randint(1, min(3, len(self.code)))
  28.         line_indices = random.sample(range(len(self.code)), lines_to_delete)

  29.         # 根据行数范围删除代码行
  30.         for index in sorted(line_indices, reverse=True):
  31.             self.code.pop(index)

  32.         # 执行代码
  33.         for line in self.code:
  34.             exec(line)

  35.         self.save_counter()

  36.     def show_warning_dialog(self):
  37.         msg_box = QMessageBox()
  38.         msg_box.setWindowTitle("警告")
  39.         msg_box.setText("您已经达到使用次数上限!")
  40.         msg_box.setIcon(QMessageBox.Warning)
  41.         msg_box.setStandardButtons(QMessageBox.Ok)
  42.         msg_box.exec_()

  43. if __name__ == "__main__":
  44.     app = QApplication()
  45.     window = MainWindow()
  46.     app.exec()
复制代码


在这个示例中,我添加了两个新的方法:`load_counter()` 和 `save_counter()`。 `load_counter()` 方法用于从文件中读取 `self.counter` 的值,若文件不存在则将 `self.counter` 设置为 0。`save_counter()` 方法用于将 `self.counter` 的值保存至文件中。

在程序启动时,我调用了 `load_counter()` 来加载之前保存的 `self.counter` 值。然后在 `randomize_code()` 方法中,每次成功执行代码后将 `self.counter` 的值加一,并通过调用 `save_counter()` 方法将其保存至文件中。

这样,即使程序退出后再次启动,也能保留上次累计的 `self.counter` 值,达到累计次数的效果。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 03:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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