清風 发表于 2024-2-10 22:40:58

程序运行出错~~

本帖最后由 清風 于 2024-2-10 22:45 编辑

import sys
from PySide6.QtWidgets import QApplication, QDialog, QVBoxLayout, QLabel, QLineEdit, QPushButton, QMessageBox
from PySide6.QtCore import QDir, QStorageInfo
from PySide6.QtWidgets import QComboBox

class LoginDialog(QDialog):
    def __init__(self):
      super().__init__()
      self.setWindowTitle("用户登录")

      layout = QVBoxLayout()

      account_label = QLabel("帐号:")
      self.account_edit = QLineEdit()
      
      layout.addWidget(self.password_edit)

      
      # 在这里实现验证逻辑,验证帐号密码是否正确
      if account == "admin" and password == "123456":
            self.accept()
      else:
            print("用户名或密码错误!")



      # 获取所有逻辑驱动器,并添加作为选项
      drives =
      main_dialog.folder_combo = QComboBox()
      main_dialog.folder_combo.addItems(drives)

      layout = QVBoxLayout()
      layout.addWidget(QLabel("选择逻辑驱动器:"))
      layout.addWidget(main_dialog.folder_combo)
      main_dialog.setLayout(layout)

      main_dialog.show()
      sys.exit(app.exec())



运行后 下拉驱动器框,没有可选择内容。(就是看不到本机的C:\d:\ 这些,选择框是空的。

FishC 发表于 2024-2-10 22:41:09

问题出在获取逻辑驱动器的部分。你需要调用`QStorageInfo.mountPoints()`方法来获取所有的逻辑驱动器。

你可以按照以下方式修改代码:

if __name__ == "__main__":
    app = QApplication(sys.argv)
    dialog = LoginDialog()
    if dialog.exec() == QDialog.Accepted:
      print("登录成功!")
      main_dialog = QDialog()
      main_dialog.setWindowTitle("主界面")

      # 获取所有逻辑驱动器,并添加作为选项
      drives =
      main_dialog.folder_combo = QComboBox()
      main_dialog.folder_combo.addItems(drives)

      layout = QVBoxLayout()
      layout.addWidget(QLabel("选择逻辑驱动器:"))
      layout.addWidget(main_dialog.folder_combo)
      main_dialog.setLayout(layout)

      main_dialog.show()
      sys.exit(app.exec())

现在运行程序,下拉框应该会显示所有的逻辑驱动器路径。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

清風 发表于 2024-2-10 22:43:57

FishC 发表于 2024-2-10 22:41
问题出在获取逻辑驱动器的部分。你需要调用`QStorageInfo.mountPoints()`方法来获取所有的逻辑驱动器。

...

报错:
Traceback (most recent call last):
File "D:\Python\pythonProject\Wvqqm\界面\登录2.py", line 49, in <module>
    drives =
                                        ^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: type object 'PySide6.QtCore.QStorageInfo' has no attribute 'mountPoints'

回复请注意python格式。

FishC 发表于 2024-2-10 22:44:09

清風 发表于 2024-02-10 22:43
报错:
Traceback (most recent call last):
File ...

非常抱歉,看起来您使用的是PySide6库的旧版本,该版本不支持`QStorageInfo.mountPoints()`方法。为了获取逻辑驱动器,您可以尝试使用`QDir.drives()`方法来替代。以下是修改后的代码:

import sys
from PySide6.QtWidgets import QApplication, QDialog, QVBoxLayout, QLabel, QComboBox
from PySide6.QtCore import QDir

if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_dialog = QDialog()
    main_dialog.setWindowTitle("主界面")
   
    drives = QDir.drives()   # 获取所有逻辑驱动器
   
    main_dialog.folder_combo = QComboBox()
    main_dialog.folder_combo.addItems()
   
    layout = QVBoxLayout()
    layout.addWidget(QLabel("选择逻辑驱动器:"))
    layout.addWidget(main_dialog.folder_combo)
    main_dialog.setLayout(layout)
    main_dialog.show()
   
    sys.exit(app.exec())

现在运行程序,下拉框应该会显示所有的逻辑驱动器路径。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 程序运行出错~~