凊风
发表于 2024-4-1 11:26:14
FishC 发表于 2024-4-1 11:22
非常抱歉,我犯了个低级错误导致代码报错了。在使用QInputDialog.getText()方法时,传入的参数太多了, ...
我在调用customized_getText函数时,需要有个变量sheet_name适时传入...
input, ok = main_window.customized_getText('录入', f'请录入《汇总表》的
<{sheet_name}>'(工作表)中行号(从1开始计数,以英文逗号隔开。例如:
1,2,3):', x, y)
FishC
发表于 2024-4-1 11:26:26
凊风 发表于 2024-04-01 11:26
我在调用customized_getText函数时,需要有个变量shee ...
非常抱歉,我之前的回答中漏掉了一个参数。在调用customized_getText函数时,可以将额外的参数sheet_name传入。以下是修改后的代码示例:
def customized_getText(self, title, label, sheet_name, x, y):
input, ok = QInputDialog.getText(self, title, label, QLineEdit.Normal, '', Qt.WindowFlags(), x, y)
return input, ok
# 调用customized_getText函数
input, ok = main_window.customized_getText('录入', f'请录入《汇总表》的({sheet_name})中行号(从1开始计数,以英文逗号隔开。例如:1,2,3):', sheet_name, x, y)
在调用customized_getText函数时,传入额外的参数sheet_name即可。请注意更新调用该函数的部分代码。
希望这次能解决您的问题。如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
凊风
发表于 2024-4-1 11:29:48
FishC 发表于 2024-4-1 11:26
非常抱歉,我之前的回答中漏掉了一个参数。在调用customized_getText函数时,可以将额外的参数sheet_na ...
sheet_name变量我是从f{sheet_name}来传入的啊,
f'请录入《汇总表》的({sheet_name})中行号(从1开始计数,以英文逗号隔开。例如:1,2,3):'
不是单独传入的
FishC
发表于 2024-4-1 11:30:02
凊风 发表于 2024-04-01 11:29
sheet_name变量我是从f{sheet_name}来传入的啊,
f ...
非常抱歉,我理解错了您的问题。如果sheet_name是从f"{sheet_name}"的形式传入的,那么可以直接在函数内部进行字符串插值。以下是修改后的代码示例:
def customized_getText(self, title, label, x, y):
input, ok = QInputDialog.getText(self, title, f'{label} ({x}, {y})')
return input, ok
# 调用customized_getText函数
input, ok = main_window.customized_getText('录入', f'请录入《汇总表》的({sheet_name})中行号(从1开始计数,以英文逗号隔开。例如:1,2,3):', x, y)
在调用customized_getText函数时,将f-string形式的字符串作为label参数传入即可。希望这次能够帮到您!如有任何进一步的问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
凊风
发表于 2024-4-1 11:31:19
FishC 发表于 2024-4-1 11:30
非常抱歉,我理解错了您的问题。如果sheet_name是从f"{sheet_name}"的形式传入的,那么可以直接在函数 ...
为什么坐标x、y也要括号起来呢?
def customized_getText(self, title, label, x, y):
input, ok = QInputDialog.getText(self, title, f'{label} ({x}, {y})')
return input, ok
FishC
发表于 2024-4-1 11:31:30
凊风 发表于 2024-04-01 11:31
为什么坐标x、y也要括号起来呢?
def customized_g ...
非常抱歉,我的回答中有误导之处。在上述代码中,括号是为了将x和y的值插入到字符串中,并以坐标的形式展示出来。
实际上,您可以根据需要来控制字符串的格式,自由地使用括号或不使用括号。如果您希望字符串显示为"请录入《汇总表》的(sheet_name)中行号(从1开始计数,以英文逗号隔开。例如:1,2,3):",可以在代码中这样写:
input, ok = QInputDialog.getText(self, title, f'{label} {sheet_name} 中行号(从1开始计数,以英文逗号隔开。例如:1,2,3):')
这样就能正确地将sheet_name的值插入到字符串中了。感谢您的指正,希望这次解答能够解决您的问题。如有任何进一步的疑问,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
凊风
发表于 2024-4-1 11:51:32
FishC 发表于 2024-4-1 10:44
非常抱歉给您带来的困惑。以下是对customized_getText方法进行更改,将其放在WindowB类中,并且将设置 ...
能不能让函数customized_getText(self, title, label, x, y)调用后,
1、既能设定坐标(以WindowB为父类不乱跑);
2、又能让用户录入的内容能够被以“,”切割呢?
FishC
发表于 2024-4-1 11:51:49
凊风 发表于 2024-04-01 11:51
能不能让函数customized_getText(self, title, label, ...
当然可以!以下是更新后的customized_getText方法,它能够设定位置和以逗号切割用户输入的内容:from PySide6.QtWidgets import QWidget, QInputDialogclass BaseWindow(QWidget): def __init__(self): super().__init__()class WindowA(BaseWindow): def __init__(self): super().__init__()class WindowB(BaseWindow): def __init__(self): super().__init__() def customized_getText(self, title, label, x, y): dlg = QInputDialog(self) dlg.setInputMode(QInputDialog.TextInput) dlg.setWindowTitle(title) dlg.setLabelText(label) dlg.move(x, y) ok = dlg.exec() if ok: text = dlg.textValue() return ok, text.split(',') else: return ok, []main_window = WindowB()x = 200y = 200input, values = main_window.customized_getText('录入', f'请录入行号(从1开始计数,以英文逗号隔开。例如:1,2,3):', x, y)现在,当调用customized_getText方法时,它会返回一个布尔值(代表用户是否点击了确定按钮)和一个列表(包含用户输入的内容以逗号分割)。如果用户点击取消按钮,返回的列表为空。希望这次的回答满足了您的需求。如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
凊风
发表于 2024-4-1 11:56:12
FishC 发表于 2024-4-1 11:51
当然可以!以下是更新后的customized_getText方法,它能够设定位置和以逗号切割用户输入的内容:from P ...
回复请注意Python格式
FishC
发表于 2024-4-1 11:56:26
凊风 发表于 2024-04-01 11:56
回复请注意Python格式
非常抱歉,下面是更新后的customized_getText方法的Python代码,按照Python的格式编写:from PySide6.QtWidgets import QWidget, QInputDialog
class BaseWindow(QWidget):
def __init__(self):
super().__init__()
class WindowA(BaseWindow):
def __init__(self):
super().__init__()
class WindowB(BaseWindow):
def __init__(self):
super().__init__()
def customized_getText(self, title, label, x, y):
dlg = QInputDialog(self)
dlg.setInputMode(QInputDialog.TextInput)
dlg.setWindowTitle(title)
dlg.setLabelText(label)
dlg.move(x, y)
ok = dlg.exec()
if ok:
text = dlg.textValue()
return ok, text.split(',')
else:
return ok,
main_window = WindowB()
x = 200
y = 200
input_, values = main_window.customized_getText('录入', f'请录入行号(从1开始计数,以英文逗号隔开。例如:1,2,3):', x, y)
现在,当调用`customized_getText`方法时,它会返回一个布尔值(代表用户是否点击了确定按钮)和一个列表(包含用户输入的内容以逗号分割)。如果用户点击取消按钮,返回的列表为空。
希望这次的回答满足了您的需求。如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
凊风
发表于 2024-4-1 13:23:30
FishC 发表于 2024-4-1 11:56
非常抱歉,下面是更新后的customized_getText方法的Python代码,按照Python的格式编写:
现在,当调用 ...
我想这样写:
def customized_getText(self, title, label, x, y):
dlg = QInputDialog(self)
dlg.setInputMode(QInputDialog.TextInput)
dlg.setWindowTitle(title)
dlg.setLabelText(label)
dlg.move(x, y)
ok = dlg.exec()
main_window = WindowB()
x = 200
y = 200
input_, values = main_window.customized_getText('录入', f'请录入行号(从1开始计数,以英文逗号隔开。例如:1,2,3):', x, y)
if ok:
exclude_rows_input = dlg.textValue()
再来对exclude_rows_input进行切割。
要怎么实现呢?
回复请注意python格式
FishC
发表于 2024-4-1 13:23:41
凊风 发表于 2024-04-01 13:23
我想这样写:
def customized_getText(self, title, ...
非常抱歉,我之前的回答中存在错误。要正确切割exclude_rows_input,请使用`.split(",")`方法将字符串按照逗号进行分割,如下所示:
def customized_getText(self, title, label, x, y):
dlg = QInputDialog(self)
dlg.setInputMode(QInputDialog.TextInput)
dlg.setWindowTitle(title)
dlg.setLabelText(label)
dlg.move(x, y)
ok = dlg.exec()
if ok:
exclude_rows_input = dlg.textValue()
values = exclude_rows_input.split(",")
return ok, values
return ok, []
main_window = WindowB()
x = 200
y = 200
input_, values = main_window.customized_getText('录入', f'请录入行号(从1开始计数,以英文逗号隔开。例如:1,2,3):', x, y)
if input_:
print(f"用户输入:{values}")
希望这次的回答对您有所帮助!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
凊风
发表于 2024-4-1 13:27:40
FishC 发表于 2024-4-1 13:23
非常抱歉,我之前的回答中存在错误。要正确切割exclude_rows_input,请使用`.split(",")`方法将字符串 ...
可能我没有表达清楚。
我的想法是记用户先录入内容,然后在不同的场合中把用户所录入的内容赋值给不同的变量(如exclude_rows_input、exclude_cols_input等等),然后再对exclude_rows_input(或者exclude_cols_input)更行切割 ,而不是在函数里customized_getText(self, title, label, x, y)就进行切割。
回复请注意python格式
FishC
发表于 2024-4-1 13:28:20
凊风 发表于 2024-04-01 13:27
可能我没有表达清楚。
我的想法是记用户先录入内容 ...
明白了您的意思。如果您想在不同的场合中使用用户输入的内容并进行切割,可以将`exclude_rows_input`(或其他变量)作为函数的返回值,然后在需要的地方对返回的值进行切割。下面是修改后的代码示例:
def customized_getText(self, title, label, x, y):
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函数
main_window = WindowB()
x = 200
y = 200
input_ = main_window.customized_getText('录入', f'请录入行号(从1开始计数,以英文逗号隔开。例如:1,2,3):', x, y)
if input_:
exclude_rows_input = input_
values = exclude_rows_input.split(",")
print(f"用户输入:{values}")
这样,即可根据需要在不同的地方使用用户输入的内容,并进行切割操作。如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
凊风
发表于 2024-4-1 13:48:55
FishC 发表于 2024-4-1 13:28
明白了您的意思。如果您想在不同的场合中使用用户输入的内容并进行切割,可以将`exclude_rows_input`( ...
感谢~~
FishC
发表于 2024-4-1 13:49:01
凊风 发表于 2024-04-01 13:48
感谢~~
不客气,如果还有其他问题,请随时提问。祝您编程愉快!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
凊风
发表于 2024-4-1 15:51:24
FishC 发表于 2024-4-1 10:32
根据您提供的代码结构和错误信息,问题出在调用`QInputDialog.getText()`函数时传入的参数不正确。
...
能不能把main_window = WindowB()
x = 200
y = 200
直接写入customized_getText函数中?不要每次调用都要带上这三行。。。
FishC
发表于 2024-4-1 15:51:40
凊风 发表于 2024-04-01 15:51
能不能把main_window = WindowB()
x = 200
y = 200
...
当然可以将这三行代码直接写入`customized_getText`函数中。在你的代码中,`customized_getText`方法定义为实例方法,因此可以通过`self`来访问类的属性和方法。这意味着你可以在`customized_getText`函数中直接使用`self.x`和`self.y`来获取坐标值。修正后的代码如下:
class BaseWindow(QWidget):
def __init__(self):
super().__init__()
class WindowA(BaseWindow):
def __init__(self):
super().__init__()
class WindowB(BaseWindow):
def __init__(self):
super().__init__()
def customized_getText(self, title, label):
x = 200
y = 200
dlg = QInputDialog(self)
dlg.setInputMode(QInputDialog.TextInput)
dlg.setWindowTitle(title)
dlg.setLabelText(label)
dlg.move(x, y)
return dlg.exec(), dlg.textValue()
main_window = WindowB()
input, ok = main_window.customized_getText('录入', f'请录入行号(从1开始计数,以英文逗号隔开。例如:1,2,3):')
通过在`customized_getText`方法中直接定义`x`和`y`变量,并将它们传递给`dlg.move()`,你就不再需要每次调用时都写入这三行了。希望这个解决方案符合你的需求!如果还有任何问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。