鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: 凊风

Pyside6问题求教~~

[复制链接]
 楼主| 发表于 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)

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

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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):'


不是单独传入的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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、又能让用户录入的内容能够被以“,”切割呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-1 11:56:12 | 显示全部楼层
FishC 发表于 2024-4-1 11:51
当然可以!以下是更新后的customized_getText方法,它能够设定位置和以逗号切割用户输入的内容:from P ...

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

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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格式

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

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-1 13:48:55 | 显示全部楼层
FishC 发表于 2024-4-1 13:28
明白了您的意思。如果您想在不同的场合中使用用户输入的内容并进行切割,可以将`exclude_rows_input`( ...

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

使用道具 举报

发表于 2024-4-1 13:49:01 | 显示全部楼层


不客气,如果还有其他问题,请随时提问。祝您编程愉快!

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

使用道具 举报

 楼主| 发表于 2024-4-1 15:51:24 | 显示全部楼层
FishC 发表于 2024-4-1 10:32
根据您提供的代码结构和错误信息,问题出在调用`QInputDialog.getText()`函数时传入的参数不正确。

...

能不能把main_window = WindowB()
x = 200
y = 200

直接写入customized_getText函数中?  不要每次调用都要带上这三行。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-9 11:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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