凊风 发表于 2024-3-19 13:32:29

信息BOX问题求教~~

现有PySide6代码如下:

         print('请在《表1》的<', sheet_name,
                  '>录入列号(必须大写英文字母,以英文逗号隔开,例如:A,B,C):',
                  end='')
            exclude_cols_input, ok = QInputDialog.getText(self, "输入列号", "请输入列号(以英文逗号隔开):")

1、请问能将sheet_name这个变量写到QInputDialog.getText的提示语中吗?

2、QInputDialog.getText的按钮可以换成中文吗?

FishC 发表于 2024-3-19 13:32:40

1、可以将sheet_name变量写到QInputDialog.getText的提示语中。你可以使用字符串的格式化方法来实现,例如:

exclude_cols_input, ok = QInputDialog.getText(self, "输入列号", f"请输入{sheet_name}的列号(以英文逗号隔开):")
这样,提示语就会显示为"请输入表名的列号(以英文逗号隔开):",其中的{sheet_name}会被替换成实际的表名。

2、QInputDialog.getText的按钮可以换成中文。你可以使用该对话框的setCancelButtonText和setTextEchoMode方法来设置按钮的文本和输入的回显模式。例如:

dialog = QInputDialog(self)
dialog.setLabelText("请输入列号(以英文逗号隔开):")
dialog.setTextEchoMode(QLineEdit.Normal)# 设置为普通的回显模式,不隐藏输入内容
dialog.setOkButtonText("确定")
dialog.setCancelButtonText("取消")

exclude_cols_input, ok = dialog.getText()

这样,对话框中的按钮文本就会显示为中文,并且输入内容会实时显示在输入框中。

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

凊风 发表于 2024-3-19 13:50:22

FishC 发表于 2024-3-19 13:32
1、可以将sheet_name变量写到QInputDialog.getText的提示语中。你可以使用字符串的格式化方法来实现,例如 ...

QInputDialog.setOkButtonText('确定')
TypeError: descriptor 'setOkButtonText' for 'PySide6.QtWidgets.QInputDialog' objects doesn't apply to a 'str' object

FishC 发表于 2024-3-19 13:50:34

凊风 发表于 2024-03-19 13:50
QInputDialog.setOkButtonText('确定')
TypeError: d ...

非常抱歉,我的回答有误。PySide6的QInputDialog类没有直接设置确定按钮文本的方法。相反,它继承自QDialogButtonBox类,你可以通过以下方式更改确定按钮的文本:

dialog = QInputDialog(self)
dialog.setLabelText("请输入列号(以英文逗号隔开):")
dialog.setTextEchoMode(QLineEdit.Normal)# 设置为普通的回显模式,不隐藏输入内容

button_box = dialog.findChild(QDialogButtonBox)
ok_button = button_box.button(QDialogButtonBox.Ok)
ok_button.setText("确定")

exclude_cols_input, ok = dialog.getText()

这样,确定按钮的文本就会被设置为"确定"。对于取消按钮的文本,你可以使用`setCancelButtonText()`方法来设置。非常抱歉给你带来了困扰。

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

凊风 发表于 2024-3-19 14:49:32

FishC 发表于 2024-3-19 13:50
非常抱歉,我的回答有误。PySide6的QInputDialog类没有直接设置确定按钮文本的方法。相反,它继承自QDi ...

button_box = QInputDialog.findChild(QDialogButtonBox)
                                        ^^^^^^^^^^^^^^^^
NameError: name 'QDialogButtonBox' is not defined

FishC 发表于 2024-3-19 14:49:43

凊风 发表于 2024-03-19 14:49
button_box = QInputDialog.findChild(QDialogButtonB ...

非常抱歉,我在先前的回答中犯了一个错误。正确的做法是使用 QMessageBox 的标准按钮来替代 QInputDialog 的按钮。
下面是修改后的代码示例:
from PySide6.QtWidgets import QMessageBox, QInputDialog

dialog = QInputDialog(self)
dialog.setLabelText("请输入列号(以英文逗号隔开):")
dialog.setTextEchoMode(QLineEdit.Normal)# 设置为普通的回显模式,不隐藏输入内容

# 获取消息框的标准按钮组
button_box = dialog.standardButtons()

# 修改确定按钮的文本
ok_button = button_box.button(QMessageBox.Ok)
ok_button.setText("确定")

# 设置新的标准按钮组
dialog.setStandardButtons(button_box)

exclude_cols_input, ok = dialog.getText()
通过这种方式,你可以成功修改确定按钮的文本为"确定"。非常抱歉给你带来困扰,谢谢你的理解!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 信息BOX问题求教~~