凊风 发表于 2024-4-16 09:07:25

FishC 发表于 2024-4-16 09:07
当然可以!你可以定义一个函数,它接受大小、位置等参数,并创建一个自定义的QFileDialog。下面是一个 ...

回复请注意Python格式

FishC 发表于 2024-4-16 09:07:33

凊风 发表于 2024-04-16 09:07
回复请注意Python格式

非常抱歉,我注意到了你对代码格式的要求。以下是调整后的代码,格式符合Python的标准风格:from PyQt6.QtWidgets import QApplication, QDialog, QFileDialog

def show_custom_file_dialog(directory, size, position):
    app = QApplication()
    dialog = QDialog()
    dialog.setWindowTitle("Custom File Dialog")
    dialog.setGeometry(*position, *size)
    dialog.file_dialog = QFileDialog(dialog)
    dialog.file_dialog.setDirectory(directory)
   
    layout = QVBoxLayout()
    layout.addWidget(dialog.file_dialog)
    dialog.setLayout(layout)
   
    dialog.exec()

if __name__ == "__main__":
    directory = "path/to/directory"
    size = (500, 500)
    position = (100, 100)
    show_custom_file_dialog(directory, size, position)

非常抱歉之前的格式不符合要求,希望这次能满足你的需求!如果还有其他问题,请随时提问。

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

凊风 发表于 2024-4-16 09:08:57

FishC 发表于 2024-4-16 09:07
非常抱歉,我注意到了你对代码格式的要求。以下是调整后的代码,格式符合Python的标准风格:from PyQt6 ...

写成这样的形式是不是会更方便一些?
# 录入框位置
    def customized_getText(self, title, label):
      x = 400
      y = 800
      dlg = QInputDialog(self)
      dlg.setInputMode(QInputDialog.TextInput)
      dlg.setWindowTitle(title)
      dlg.setLabelText(label)
      dlg.move(x, y)
      ok = dlg.exec()
      if ok:
            return dlg.textValue()
      return ""

FishC 发表于 2024-4-16 09:09:04

凊风 发表于 2024-04-16 09:08
写成这样的形式是不是会更方便一些?
# 录入框位置
...

是的,您修改后的代码更符合Python的格式要求。下面是修改后的代码:

# 录入框位置
def customized_getText(self, title, label):
    x = 400
    y = 800
    dlg = QInputDialog(self)
    dlg.setInputMode(QInputDialog.TextInput)
    dlg.setWindowTitle(title)
    dlg.setLabelText(label)
    dlg.move(x, y)
    ok = dlg.exec()
    if ok:
      return dlg.textValue()
    return ""

这段代码定义了一个名为customized_getText的方法,在指定的位置上创建一个QInputDialog用于输入文本。修改后的代码应该可以正常运行了!如果还有其他问题,请随时提问。

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

凊风 发表于 2024-4-16 09:10:46

FishC 发表于 2024-4-16 09:09
是的,您修改后的代码更符合Python的格式要求。下面是修改后的代码:




。。。我的意思是麻烦参照这个样式
# 录入框位置
    def customized_getText(self, title, label):
      x = 400
      y = 800
      dlg = QInputDialog(self)
      dlg.setInputMode(QInputDialog.TextInput)
      dlg.setWindowTitle(title)
      dlg.setLabelText(label)
      dlg.move(x, y)
      ok = dlg.exec()
      if ok:
            return dlg.textValue()
      return ""

帮忙定义一个QFileDialog函数。

FishC 发表于 2024-4-16 09:10:57

凊风 发表于 2024-04-16 09:10
。。。我的意思是麻烦参照这个样式
# 录入框位置
   ...

非常抱歉,我误解了您的意思。下面是一个参考样式的QFileDialog函数定义:

def customized_getFile(self, title, filter):
    dlg = QFileDialog(self)
    dlg.setWindowTitle(title)
    dlg.setFileMode(QFileDialog.ExistingFile)
    dlg.setNameFilter(filter)
    ok = dlg.exec()
    if ok:
      selected_files = dlg.selectedFiles()
      return selected_files
    return ""

这个函数接受两个参数:title表示对话框的标题,filter表示文件类型的过滤器。它创建一个QFileDialog实例并设置一些属性,包括窗口标题、文件选择模式和文件过滤器。然后执行对话框并获取用户选择的文件路径,最后将选择的文件路径返回。如果用户取消选择或关闭对话框,函数将返回空字符串。

希望这次回答符合您的期望!如果您还有其他问题,请随时提问。

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

凊风 发表于 2024-4-16 09:12:01

FishC 发表于 2024-4-16 09:10
非常抱歉,我误解了您的意思。下面是一个参考样式的QFileDialog函数定义:




坐标和大小呢?

FishC 发表于 2024-4-16 09:12:07

凊风 发表于 2024-04-16 09:12
坐标和大小呢?

非常抱歉,我漏掉了设置对话框位置和大小的部分。下面是更新后的函数定义:def customized_getFile(self, title, filter, x, y, width, height):    dlg = QFileDialog(self)    dlg.setWindowTitle(title)    dlg.setFileMode(QFileDialog.ExistingFile)    dlg.setNameFilter(filter)    dlg.setGeometry(x, y, width, height)    ok = dlg.exec()    if ok:      selected_files = dlg.selectedFiles()      return selected_files    return ""这次更新的函数添加了四个参数:x表示对话框左上角的x坐标,y表示对话框左上角的y坐标,width表示对话框的宽度,height表示对话框的高度。通过调用`dlg.setGeometry(x, y, width, height)`来设置对话框的位置和大小。其他部分与之前的函数定义相同。希望这次回答能满足您的需求!如果您还有其他问题,请随时提问。

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

凊风 发表于 2024-4-16 09:13:23

FishC 发表于 2024-4-16 09:12
非常抱歉,我漏掉了设置对话框位置和大小的部分。下面是更新后的函数定义:def customized_getFile(sel ...

回复请注意Python格式和代码说明

FishC 发表于 2024-4-16 09:13:36

凊风 发表于 2024-04-16 09:13
回复请注意Python格式和代码说明

非常抱歉,我会注意Python格式和代码注释的规范。以下是更新后的函数定义:def customized_getFile(self, title, filter, x, y, width, height):
    """
    自定义获取文件对话框,并设置位置和大小
    :param title: 对话框标题
    :param filter: 文件类型过滤器
    :param x: 对话框左上角x坐标
    :param y: 对话框左上角y坐标
    :param width: 对话框宽度
    :param height: 对话框高度
    :return: 用户选择的文件路径
    """
    dlg = QFileDialog(self)
    dlg.setWindowTitle(title)
    dlg.setFileMode(QFileDialog.ExistingFile)
    dlg.setNameFilter(filter)
    dlg.setGeometry(x, y, width, height)
    ok = dlg.exec()
    if ok:
      selected_files = dlg.selectedFiles()
      return selected_files
    return ""
这次更新的代码中,我为函数添加了详细的注释来解释每个参数的作用和返回值。希望这次回答能够满足您的需求!如果您还有其他问题,请随时提问。

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

凊风 发表于 2024-4-16 09:21:46

FishC 发表于 2024-4-16 09:13
非常抱歉,我会注意Python格式和代码注释的规范。以下是更新后的函数定义:
这次更新的代码中,我为函 ...

可能我没表达清楚。
我的需求是在folder_path = QFileDialog.getExistingDirectory(
            self, "请指定文件夹", "", QFileDialog.ShowDirsOnly)这一句代码中,

能不能定义一个函数加入坐标和大小?

FishC 发表于 2024-4-16 09:22:00

凊风 发表于 2024-04-16 09:21
可能我没表达清楚。
我的需求是在folder_path = QFil ...

抱歉我理解错了你的意思。在`QFileDialog.getExistingDirectory()`这个函数中,无法直接设置对话框的坐标和大小。这个函数是一个静态方法,无法通过继承或者子类化来进行自定义拓展。

不过,你可以使用`QFileDialog`类的对象来实现你想要的效果。下面是一个示例代码,它创建了一个`QFileDialog`对象,并设置了对话框的位置和大小:

dlg = QFileDialog(self)# 创建QFileDialog对象
dlg.setWindowTitle("请指定文件夹")# 设置标题
dlg.setFileMode(QFileDialog.DirectoryOnly)# 只能选择文件夹
dlg.setOptions(QFileDialog.DontUseNativeDialog)# 禁用系统原生对话框
dlg.setGeometry(x, y, width, height)# 设置对话框的位置和大小

folder_path = dlg.getExistingDirectory()# 获取文件夹路径

在上面的代码中,我通过调用`setGeometry()`方法来设置对话框的位置和大小。需要注意的是,`setOptions(QFileDialog.DontUseNativeDialog)`这一行代码是为了禁用系统原生对话框,以确保可以正常设置对话框的位置和大小。

希望这次回答符合你的需求!如果还有其他问题,请随时提问。

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

凊风 发表于 2024-4-16 09:33:27

FishC 发表于 2024-4-16 09:22
抱歉我理解错了你的意思。在`QFileDialog.getExistingDirectory()`这个函数中,无法直接设置对话框的坐 ...

报错:
Traceback (most recent call last):
   line 794, in on_combobox_clicked
    self.select_folder(self)
line 801, in select_folder
    dlg.setFileMode(QFileDialog.DirectoryOnly)# 只能选择文件夹
                  ^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: type object 'PySide6.QtWidgets.QFileDialog' has no attribute 'DirectoryOnly'. Did you mean: 'directoryUrl'?

FishC 发表于 2024-4-16 09:33:34

凊风 发表于 2024-04-16 09:33
报错:
Traceback (most recent call last):
   lin ...

抱歉,对不起我的错误。在PySide6中,`QFileDialog`类的属性名称稍有不同。要选择文件夹,你应该使用`QFileDialog.Directory`而不是`QFileDialog.DirectoryOnly`。这是一个修改后的代码示例:dlg = QFileDialog(self)# 创建QFileDialog对象dlg.setWindowTitle("请指定文件夹")# 设置标题dlg.setFileMode(QFileDialog.Directory)# 只能选择文件夹dlg.setOptions(QFileDialog.DontUseNativeDialog)# 禁用系统原生对话框dlg.setGeometry(x, y, width, height)# 设置对话框的位置和大小folder_path = dlg.getExistingDirectory()# 获取文件夹路径请注意,`setFileMode(QFileDialog.Directory)`用于设置只能选择文件夹。希望这次回答能解决你的问题!如果还有其他问题,请随时提问。

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

凊风 发表于 2024-4-16 09:34:32

FishC 发表于 2024-4-16 09:33
抱歉,对不起我的错误。在PySide6中,`QFileDialog`类的属性名称稍有不同。要选择文件夹,你应该使用`Q ...

回复请注意Python格式

FishC 发表于 2024-4-16 09:34:40

凊风 发表于 2024-04-16 09:34
回复请注意Python格式

非常抱歉,下面是格式化后的代码示例:

dlg = QFileDialog(self)# 创建QFileDialog对象
dlg.setWindowTitle("请指定文件夹")# 设置标题
dlg.setFileMode(QFileDialog.Directory)# 只能选择文件夹
dlg.setOptions(QFileDialog.DontUseNativeDialog)# 禁用系统原生对话框
dlg.setGeometry(x, y, width, height)# 设置对话框的位置和大小
folder_path = dlg.getExistingDirectory()# 获取文件夹路径

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

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

凊风 发表于 2024-4-16 09:40:27

FishC 发表于 2024-4-16 09:34
非常抱歉,下面是格式化后的代码示例:




那请问这个
      if folder_path:
            reply = QMessageBox.question(
                self, "确认", "是否指定该文件夹?",
                QMessageBox.Yes | QMessageBox.No)
            if reply == QMessageBox.No:
                QMessageBox.warning(self, "警告", "必须指定目标文件夹!!!")
                self.select_folder(self)

这其中的QMessageBox能否指定大小和位置?

FishC 发表于 2024-4-16 09:40:42

凊风 发表于 2024-04-16 09:40
那请问这个
      if folder_path:
            rep ...

是的,QMessageBox可以指定大小和位置。可以使用`setGeometry()`方法来设置消息框的位置和大小。下面是一个示例代码:

if folder_path:
    reply = QMessageBox.question(
      self, "确认", "是否指定该文件夹?",
      QMessageBox.Yes | QMessageBox.No
    )
    if reply == QMessageBox.No:
      msg_box = QMessageBox()
      msg_box.setIcon(QMessageBox.Warning)
      msg_box.setWindowTitle("警告")
      msg_box.setText("必须指定目标文件夹!!!")
      msg_box.setGeometry(x, y, width, height)# 设置消息框的位置和大小
      msg_box.exec()
      self.select_folder(self)

在上面的示例中,我创建了一个新的QMessageBox对象`msg_box`,然后使用`setIcon()`方法设置图标类型为警告,使用`setWindowTitle()`设置标题,使用`setText()`设置提示文本。最后,使用`setGeometry()`方法设置消息框的位置和大小。

希望这个解答对你有所帮助!如果还有其他问题,请继续提问。

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

凊风 发表于 2024-4-16 09:46:08

FishC 发表于 2024-4-16 09:40
是的,QMessageBox可以指定大小和位置。可以使用`setGeometry()`方法来设置消息框的位置和大小。下面是 ...

那reply = QMessageBox.question中的QMessageBox.question又如何设置大小和位置呢?

FishC 发表于 2024-4-16 09:46:17

凊风 发表于 2024-04-16 09:46
那reply = QMessageBox.question中的QMessageBox.ques ...

对于`QMessageBox.question`,它是一个静态方法,无法直接设置大小和位置。但是,你可以使用`QMessageBox`的`setDefaultGeometry()`方法来设置所有消息框的默认大小和位置。下面是一个示例代码:QMessageBox.setDefaultGeometry(x, y, width, height)# 设置所有消息框的默认位置和大小reply = QMessageBox.question(    self, "确认", "是否指定该文件夹?",    QMessageBox.Yes | QMessageBox.No)在上面的示例中,通过调用`QMessageBox.setDefaultGeometry()`方法,可以设置所有消息框的默认位置和大小。然后,再调用`QMessageBox.question`方法创建消息框时,就会按照默认的大小和位置进行显示。希望这个解答对你有所帮助!如果还有其他问题,请继续提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: 1 2 3 4 [5] 6 7 8 9 10 11
查看完整版本: Pyside6求教20240414~~~