鱼C论坛

 找回密码
 立即注册
查看: 3057|回复: 212

Pyside6求教20240414~~~

  [复制链接]
发表于 2024-4-14 15:23:45 | 显示全部楼层 |阅读模式

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

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

x
现有如下代码:
class BaseWindow(QWidget):
    def __init__(self):
        super().__init__()
        # 设置ESC事件
        self.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint)
        self.setFocusPolicy(Qt.StrongFocus)
        self.installEventFilter(self)

        # 设置退出按钮
        self.exit_button = QPushButton("退出", self)
        self.exit_button.clicked.connect(self.confirm_exit)

。。。。。。

class Welcome_Window(BaseWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("欢迎使用")

        。。。。。。

      widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(QWidget)


if __name__ == "__main__":
    app = QApplication([])
    window_a = Welcome_Window()
    app.exec()

请问为什么会报错:
Traceback (most recent call last):
line 1182, in <module>
    window_a = Welcome_Window()
               ^^^^^^^^^^^^^^^^
line 285, in __init__
    self.setCentralWidget(QWidget)
    ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Welcome_Window' object has no attribute 'setCentralWidget'

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2024-4-14 15:23:58 | 显示全部楼层
你好!这个错误是因为在Welcome_Window类的构造函数中,你尝试调用了一个不存在的方法setCentralWidget。setCentralWidget是QMainWindow类的一个方法,而不是QWidget类的方法。

解决这个问题的方法是将Welcome_Window类继承自QMainWindow而不是QWidget,然后再调用setCentralWidget方法来设置中心窗口部件。修改后的代码如下:
class Welcome_Window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("欢迎使用")

        layout = QVBoxLayout()
        layout.addWidget(self.exit_button)

        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)


if __name__ == "__main__":
    app = QApplication([])
    window_a = Welcome_Window()
    window_a.show()
    app.exec()

注意,还需要将`QApplication`的参数传递给它(`app = QApplication([])`)。另外,需要通过调用`window_a.show()`方法来显示窗口。运行修改后的代码,应该就不会报错了。

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

使用道具 举报

 楼主| 发表于 2024-4-14 15:26:19 | 显示全部楼层
FishC 发表于 2024-4-14 15:23
你好!这个错误是因为在Welcome_Window类的构造函数中,你尝试调用了一个不存在的方法setCentralWidget。se ...

关键我是想让Welcome_Window从BaseWindow继承ESC、退出按钮等,

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

使用道具 举报

发表于 2024-4-14 15:26:45 | 显示全部楼层
凊风 发表于 2024-04-14 15:26
关键我是想让Welcome_Window从BaseWindow继承ESC、退 ...


抱歉,给你带来了困惑。如果你希望Welcome_Window从BaseWindow继承ESC和退出按钮等功能,你可以对BaseWindow进行一些修改。让我们来看看如何修改代码:
from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PySide6.QtCore import Qt

class BaseWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint)
        self.setFocusPolicy(Qt.StrongFocus)
        self.installEventFilter(self)

    def confirm_exit(self):
        # 自定义的退出确认逻辑
        reply = QMessageBox.question(self, "退出", "确定要退出吗?", QMessageBox.Yes | QMessageBox.No)
        if reply == QMessageBox.Yes:
            self.close()

class Welcome_Window(BaseWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("欢迎使用")
        
        # 设置退出按钮
        self.exit_button = QPushButton("退出", self)
        self.exit_button.clicked.connect(self.confirm_exit)

        layout = QVBoxLayout()
        layout.addWidget(self.exit_button)

        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication([])
    window_a = Welcome_Window()
    window_a.show()
    app.exec()

在这个修改后的代码中,Welcome_Window类继承自BaseWindow类。在BaseWindow类中,我们添加了confirm_exit方法来处理退出按钮的点击事件。除此之外,其他的代码保持不变。

这样,Welcome_Window就能够继承BaseWindow类的ESC事件和退出按钮等功能了。希望这次能够解决你的问题!如果还有其他疑问,请随时提问。

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

使用道具 举报

 楼主| 发表于 2024-4-14 15:29:02 | 显示全部楼层
FishC 发表于 2024-4-14 15:26
抱歉,给你带来了困惑。如果你希望Welcome_Window从BaseWindow继承ESC和退出按钮等功能,你可以对BaseW ...

class BaseWindow(QWidget):
    def __init__(self):
        super().__init__()
        # 设置ESC事件
        self.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint)
        self.setFocusPolicy(Qt.StrongFocus)
        self.installEventFilter(self)

        # 设置退出按钮
        self.exit_button = QPushButton("退出", self)
        self.exit_button.clicked.connect(self.confirm_exit)

# 设置ESC事件和# 设置退出按钮我已经放在了BaseWindow中了啊,

Welcome_Window(BaseWindow)还要再放一次?

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

使用道具 举报

发表于 2024-4-14 15:29:17 | 显示全部楼层
凊风 发表于 2024-04-14 15:29
class BaseWindow(QWidget):
    def __init__(self) ...


抱歉我的理解有误。你是对的,将ESC事件和退出按钮放在BaseWindow中就可以了,不需要在Welcome_Window再次设置。

下面是修改后的代码:
from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PySide6.QtCore import Qt

class BaseWindow(QWidget):
    def __init__(self):
        super().__init__()
        # 设置ESC事件
        self.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint)
        self.setFocusPolicy(Qt.StrongFocus)
        self.installEventFilter(self)
        
        # 设置退出按钮
        self.exit_button = QPushButton("退出", self)
        self.exit_button.clicked.connect(self.confirm_exit)
    
    def confirm_exit(self):
        # 自定义的退出确认逻辑
        reply = QMessageBox.question(self, "退出", "确定要退出吗?", QMessageBox.Yes | QMessageBox.No)
        if reply == QMessageBox.Yes:
            self.close()

class Welcome_Window(BaseWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("欢迎使用")
        
        layout = QVBoxLayout()
        layout.addWidget(self.exit_button)
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication()
    window_a = Welcome_Window()
    window_a.show()
    app.exec()

这样,在Welcome_Window中继承BaseWindow后,就会直接拥有BaseWindow中设置的ESC事件和退出按钮功能。非常抱歉给你带来的困惑,希望这次解释清楚了!如果还有其他问题,请继续提问。

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

使用道具 举报

 楼主| 发表于 2024-4-14 15:31:23 | 显示全部楼层
FishC 发表于 2024-4-14 15:29
抱歉我的理解有误。你是对的,将ESC事件和退出按钮放在BaseWindow中就可以了,不需要在Welcome_Window ...

现在的问题是:
class BaseWindow(QWidget):
    def __init__(self):
        super().__init__()
        # 设置ESC事件
        self.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint)
        self.setFocusPolicy(Qt.StrongFocus)
        self.installEventFilter(self)

        # 设置退出按钮
        self.exit_button = QPushButton("退出", self)
        self.exit_button.clicked.connect(self.confirm_exit)

。。。。。。

class Welcome_Window(BaseWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("欢迎使用")

        。。。。。。

      widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(QWidget)


if __name__ == "__main__":
    app = QApplication([])
    window_a = Welcome_Window()
    app.exec()

请问为什么会报错:
Traceback (most recent call last):
line 1182, in <module>
    window_a = Welcome_Window()
               ^^^^^^^^^^^^^^^^
line 285, in __init__
    self.setCentralWidget(QWidget)
    ^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Welcome_Window' object has no attribute 'setCentralWidget'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-14 15:31:39 | 显示全部楼层
凊风 发表于 2024-04-14 15:31
现在的问题是:
class BaseWindow(QWidget):
    de ...


非常抱歉,我之前的回答有误。setCentralWidget是QMainWindow的一个方法,不能直接在QWidget中使用。如果你想在Welcome_Window中设置一个中心部件,可以将Welcome_Window改为继承自QMainWindow而不是QWidget。修改后的代码如下:
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget
from PySide6.QtCore import Qt

class BaseWindow(QWidget):
    def __init__(self):
        super().__init__()
        # 设置ESC事件
        self.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint)
        self.setFocusPolicy(Qt.StrongFocus)
        self.installEventFilter(self)
        # 设置退出按钮
        self.exit_button = QPushButton("退出", self)
        self.exit_button.clicked.connect(self.confirm_exit)

    def confirm_exit(self):
        # 自定义的退出确认逻辑
        reply = QMessageBox.question(
            self, "退出", "确定要退出吗?", QMessageBox.Yes | QMessageBox.No
        )
        if reply == QMessageBox.Yes:
            self.close()

class Welcome_Window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("欢迎使用")
        layout = QVBoxLayout()
        layout.addWidget(self.exit_button)
        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)

if __name__ == "__main__":
    app = QApplication()
    window_a = Welcome_Window()
    window_a.show()
    app.exec()

这样,Welcome_Window就继承了QMainWindow,可以使用setCentralWidget方法来设置中心部件。同时,我也修正了BaseWindow中退出按钮的点击事件的定义。希望这次能解决你的问题,如有其他疑问,请随时提问。

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

使用道具 举报

 楼主| 发表于 2024-4-14 15:36:42 | 显示全部楼层
FishC 发表于 2024-4-14 15:31
非常抱歉,我之前的回答有误。setCentralWidget是QMainWindow的一个方法,不能直接在QWidget中使用。如 ...

可能我没表达清楚:

现在的问题是:
class BaseWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # 设置ESC事件
        self.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint)
        self.setFocusPolicy(Qt.StrongFocus)
        self.installEventFilter(self)

        # 设置退出按钮
        self.exit_button = QPushButton("退出", self)
        self.exit_button.clicked.connect(self.confirm_exit)

。。。。。。

class Welcome_Window(BaseWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("欢迎使用")

        。。。。。。

      widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(QWidget)


if __name__ == "__main__":
    app = QApplication([])
    window_a = Welcome_Window()
    app.exec()

我把class BaseWindow(QWidget)改成class BaseWindow(QMainWindow),
然后报错:

Traceback (most recent call last):
line 1182, in <module>
    window_a = Welcome_Window()
               ^^^^^^^^^^^^^^^^
  line 285, in __init__
    self.setCentralWidget(QWidget)
TypeError: 'PySide6.QtWidgets.QMainWindow.setCentralWidget' called with wrong argument types:
  PySide6.QtWidgets.QMainWindow.setCentralWidget(ObjectType)
Supported signatures:
  PySide6.QtWidgets.QMainWindow.setCentralWidget(PySide6.QtWidgets.QWidget)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-14 15:37:00 | 显示全部楼层
凊风 发表于 2024-04-14 15:36
可能我没表达清楚:

现在的问题是:
class BaseWi ...


非常抱歉之前的回答有误。你在Welcome_Window类的构造函数中,调用`self.setCentralWidget(QWidget)`时出现了错误。`setCentralWidget`方法需要接收一个QWidget对象作为参数,而不是QWidget类本身。

你可以修改代码为`self.setCentralWidget(widget)`,将widget作为参数传递给setCentralWidget方法。这样就可以正确设置欢迎窗口的中心部件了。

修改后的代码如下:
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget
from PySide6.QtCore import Qt

class BaseWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # 设置ESC事件
        self.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint)
        self.setFocusPolicy(Qt.StrongFocus)
        self.installEventFilter(self)
        # 设置退出按钮
        self.exit_button = QPushButton("退出", self)
        self.exit_button.clicked.connect(self.confirm_exit)

    def confirm_exit(self):
        # 自定义的退出确认逻辑
        reply = QMessageBox.question(
            self, "退出", "确定要退出吗?", QMessageBox.Yes | QMessageBox.No
        )
        if reply == QMessageBox.Yes:
            self.close()

class Welcome_Window(BaseWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("欢迎使用")
        layout = QVBoxLayout()
        layout.addWidget(self.exit_button)
        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)

if __name__ == "__main__":
    app = QApplication([])
    window_a = Welcome_Window()
    window_a.show()
    app.exec()

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

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

使用道具 举报

 楼主| 发表于 2024-4-14 17:08:07 | 显示全部楼层
FishC 发表于 2024-4-14 15:37
非常抱歉之前的回答有误。你在Welcome_Window类的构造函数中,调用`self.setCentralWidget(QWidget)`时 ...

请问这是什么错误?
Traceback (most recent call last):
line 640, in retranslateUi
    self.print_with_color1(notice[0], 'red')
   line 135, in print_with_color1
    format1.setForeground(color1)
TypeError: 'PySide6.QtGui.QTextFormat.setForeground' called with wrong argument types:
  PySide6.QtGui.QTextFormat.setForeground(str)
Supported signatures:
  PySide6.QtGui.QTextFormat.setForeground(Union[PySide6.QtGui.QBrush, PySide6.QtCore.Qt.BrushStyle, PySide6.QtCore.Qt.GlobalColor, PySide6.QtGui.QColor, PySide6.QtGui.QGradient, PySide6.QtGui.QImage, PySide6.QtGui.QPixmap])

进程已结束,退出代码为 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-14 17:08:26 | 显示全部楼层
凊风 发表于 2024-04-14 17:08
请问这是什么错误?
Traceback (most recent call la ...


这个错误是因为`setForeground()`方法需要接受一个`QBrush`对象作为参数,而不是直接传入颜色字符串。你可以通过创建一个`QBrush`对象,并设置颜色,然后将其传递给`setForeground()`方法。修改代码如下:
from PySide6.QtGui import QBrush, QColor

# ...

class BaseWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # ...

    def print_with_color1(self, message, color):
        format1 = self.text_edit.currentCharFormat()
        brush = QBrush(QColor(color))
        format1.setForeground(brush)
        cursor = self.text_edit.textCursor()
        cursor.setCharFormat(format1)
        cursor.insertText(message)

# ...

在`print_with_color1()`方法中,我们创建了一个`QBrush`对象并将颜色作为参数传递给它。然后,我们将该`QBrush`对象设置为`format1`的前景色。

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

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

使用道具 举报

 楼主| 发表于 2024-4-14 17:12:39 | 显示全部楼层
FishC 发表于 2024-4-14 17:08
这个错误是因为`setForeground()`方法需要接受一个`QBrush`对象作为参数,而不是直接传入颜色字符串。 ...

报错:
Traceback (most recent call last):

   line 648, in retranslateUi
    self.print_with_color0(notice[0], 'red')
  line 130, in print_with_color0
    format1 = self.text_edit.currentCharFormat()
              ^^^^^^^^^^^^^^
AttributeError: 'Region_Select_Window' object has no attribute 'text_edit'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-14 17:12:53 | 显示全部楼层
凊风 发表于 2024-04-14 17:12
报错:
Traceback (most recent call last):

   l ...


这个错误是因为你的`Region_Select_Window`类没有名为`text_edit`的属性。请确保你在`Region_Select_Window`类中添加了一个名为`text_edit`的`QTextEdit`控件或者属性。

例如,你可以修改`Region_Select_Window`类的代码如下:
class Region_Select_Window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("选择地区")

        self.text_edit = QTextEdit(self)  # 添加一个名为text_edit的QTextEdit控件
        
        layout = QVBoxLayout()
        layout.addWidget(self.text_edit)
        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)
        
    def print_with_color0(self, message, color):
        format1 = self.text_edit.currentCharFormat()
        brush = QBrush(QColor(color))
        format1.setForeground(brush)
        cursor = self.text_edit.textCursor()
        cursor.setCharFormat(format1)
        cursor.insertText(message)

在这个修改的代码中,我们在`Region_Select_Window`类的构造函数中添加了一个名为`text_edit`的`QTextEdit`控件,并在`print_with_color0()`方法中使用它进行相关操作。

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

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

使用道具 举报

 楼主| 发表于 2024-4-14 18:00:23 | 显示全部楼层
FishC 发表于 2024-4-14 17:12
这个错误是因为你的`Region_Select_Window`类没有名为`text_edit`的属性。请确保你在`Region_Select_Wi ...

self.comboBox = QComboBox(self)
        self.comboBox.setObjectName(u"comboBox")
        self.comboBox.setGeometry(QRect(50, 155, 265, 35))
        self.comboBox.setMaximumSize(QSize(16777215, 16777215))
        self.comboBox.addItems(comboBox_data)        
        self.comboBox.setCurrentIndex(0)

请问self.comboBox中显示的字体、颜色和大小要怎么设置?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-14 18:01:15 | 显示全部楼层
凊风 发表于 2024-04-14 18:00
self.comboBox = QComboBox(self)
        self.comb ...


要设置`self.comboBox`中显示的字体、颜色和大小,你可以使用字体样式表(QSS)来实现。在`self.comboBox`对象上调用`setStyleSheet()`方法,并将相应的字体、颜色和大小信息作为参数传递给它。

以下是一个示例代码,展示了如何设置字体为Arial、颜色为红色、大小为12px:
self.comboBox.setStyleSheet("font-family: Arial; color: red; font-size: 12px;")

你可以根据需要修改字体、颜色和大小的值,选择合适的样式。只需将上述代码放在你的代码中`self.comboBox`的初始化之后即可。

请注意,这只是一种设置字体样式的方法。如果你想更精确地控制字体和颜色,还可以使用`QFont`和`QPalette`类进行设置。但对于简单的设置,使用样式表是一种快捷简单的方式。

希望这能帮助到你!如果还有其他问题,请随时提问。

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

使用道具 举报

 楼主| 发表于 2024-4-14 18:29:48 | 显示全部楼层
FishC 发表于 2024-4-14 18:01
要设置`self.comboBox`中显示的字体、颜色和大小,你可以使用字体样式表(QSS)来实现。在`self.comboB ...

请问如何判断一个comboBox是否被点击了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-14 18:30:01 | 显示全部楼层
凊风 发表于 2024-04-14 18:29
请问如何判断一个comboBox是否被点击了?


要判断一个comboBox是否被点击了,可以通过连接comboBox的`currentIndexChanged`信号来实现。当comboBox被点击并选中了一个新的项时,`currentIndexChanged`信号会被触发。可以将一个槽函数与该信号连接起来,在槽函数中执行相应的操作来判断comboBox是否被点击了。

以下是一个示例代码,展示了如何使用`currentIndexChanged`信号来检测comboBox的点击事件:
from PySide6.QtWidgets import QApplication, QComboBox, QWidget

def on_combobox_clicked(index):
    print("ComboBox clicked!")
    # 执行其他操作...

if __name__ == "__main__":
    app = QApplication()
    
    window = QWidget()
    comboBox = QComboBox(window)
    comboBox.addItem("Item 1")
    comboBox.addItem("Item 2")
    comboBox.currentIndexChanged.connect(on_combobox_clicked)
    
    window.show()
    app.exec()

在上述代码中,我们定义了一个名为`on_combobox_clicked`的槽函数,当comboBox被点击并选中了一个新的项时,该槽函数会被调用。这里只是简单地打印了一条消息,你可以根据需要在槽函数中执行其他操作。

请注意,为了能够正常触发信号,需要将comboBox放在一个QWidget窗口中,并确保窗口显示出来(如上述代码中的`window.show()`)。这样才能与应用程序的事件循环进行交互。

希望这能帮助你!如果还有其他问题,请随时提问。

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

使用道具 举报

 楼主| 发表于 2024-4-14 19:00:22 | 显示全部楼层
FishC 发表于 2024-4-14 18:30
要判断一个comboBox是否被点击了,可以通过连接comboBox的`currentIndexChanged`信号来实现。当comboBo ...

请问如何从用户所指定的文件夹中判断有没有“行政区划.xlsx”:

如果有,如何读取到“行政区划.xlsx”的更新时间?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-14 19:01:32 | 显示全部楼层
凊风 发表于 2024-04-14 19:00
请问如何从用户所指定的文件夹中判断有没有“行政区划 ...


要从用户指定的文件夹中判断是否存在名为“行政区划.xlsx”的文件,并获取其更新时间,可以使用Python的os模块和datetime模块来实现。以下是一个示例代码:import os
from datetime import datetime

folder_path = input("请输入文件夹路径:")  # 用户输入文件夹路径

file_path = os.path.join(folder_path, "行政区划.xlsx")  # 构造文件路径

if os.path.exists(file_path):  # 判断文件是否存在
    # 获取文件的更新时间
    update_time = os.path.getmtime(file_path)
    update_time = datetime.fromtimestamp(update_time)
    print(f"文件存在,更新时间为:{update_time}")
else:
    print("文件不存在")

在上述代码中,我们首先通过input函数获取用户输入的文件夹路径,并使用os模块的os.path.join函数构建完整的文件路径。然后,使用os.path.exists函数判断指定的文件是否存在。

如果文件存在,我们使用os.path.getmtime函数获取文件的更新时间,该函数返回的是时间戳(自1970年1月1日以来经过的秒数)。然后,我们将时间戳转换为datetime对象,使用datetime.fromtimestamp方法进行转换。最后,我们打印出更新时间。

如果文件不存在,则输出相应的提示信息。

希望这能解决你的问题!如果还有其他问题,请随时提问。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 00:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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