全球主机交流论坛备用站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

全球云38元起免备案V2EX搬瓦工VPS
SEO查询超级PING网站测速
Virmach特价鸡乌云漏洞吾爱破解
查看: 147|回复: 5

求教python大佬,有个函数调用问题

[复制链接]

90

主题

145

回帖

746

积分

高级会员

Rank: 4

积分
746
发表于 2024-12-5 03:25:42 | 显示全部楼层 |阅读模式
20230417
我前些天发了一个“鼠标点击精灵”,是用按键精灵做的,
有人说不如用python做。
我就学。
现在有个问题解决不了。

如下
  1. def 鼠标位置(self):
  2. width, height = pyautogui.position()
  3. x=str(width)
  4. y=str(height)
  5. self.lineEditx5.setText(x)
  6. self.lineEdity5.setText(y)
复制代码


这个函数是把鼠标的坐标显示到输入框中去。
因为有多个输入框,有个值是要变的,就是 lineEditx5,lineEdity5,
调用函数时,我需要把后面的5改成其他数字

但是这个地方根本没有办法作为一个参数传递进去。
我在网上找也没办法,
有大佬知道怎么弄吗?
求解决。
MJJ,你的签名掉了~~~
回复

使用道具 举报

90

主题

145

回帖

746

积分

高级会员

Rank: 4

积分
746
 楼主| 发表于 2024-12-5 06:09:46 | 显示全部楼层
网上找到方法了,用
self.button.clicked.connect(lambda:self.mouse(5))
要在前面加上一个 lambda:
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

15

主题

47

回帖

187

积分

注册会员

Rank: 2

积分
187
发表于 2024-12-5 03:27:56 | 显示全部楼层
def 鼠标位置(self, num):
width, height = pyautogui.position()
x = str(width)
y = str(height)

# 使用getattr动态访问lineEdit属性
x_input = getattr(self, f'lineEditx{num}')
y_input = getattr(self, f'lineEdity{num}')

x_input.setText(x)
y_input.setText(y)

self.鼠标位置(5)# 更新lineEditx5和lineEdity5
self.鼠标位置(6)# 更新lineEditx6和lineEdity6
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

90

主题

145

回帖

746

积分

高级会员

Rank: 4

积分
746
 楼主| 发表于 2024-12-5 05:01:47 | 显示全部楼层
本帖最后由 云生 于 2024-12-5 05:54 编辑
杜若言叶 发表于 2024-12-5 03:27
def 鼠标位置(self, num):
width, height = pyautogui.position()
x = str(width)


非常感谢,如果只用 self.鼠标位置(5) 是可以运行的,

但是我现在的情况是,需要点击按钮触发这个函数,
我用
self.button.clicked.connect(self.mouse(5,self))调用时,
总是出错,提示
takes 2 positional arguments but 3 were given


如果用
self.button.clicked.connect(self.mouse(5))
则又提示
argument 1 has unexpected type 'NoneType'

我看能不能写成 if 语句,检测到点击了按钮则运行 self.鼠标位置(5)
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

1

主题

38

回帖

143

积分

注册会员

Rank: 2

积分
143
发表于 2024-12-5 03:27:00 | 显示全部楼层
pyqt?
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

0

主题

51

回帖

164

积分

注册会员

Rank: 2

积分
164
发表于 2024-12-5 13:28:56 | 显示全部楼层
  1. def get_mouse_position(self, num):
  2. def set_position():
  3. width, height = pyautogui.position()
  4. x = str(width)
  5. y = str(height)

  6. x_input = getattr(self, f'lineEditx{num}')
  7. y_input = getattr(self, f'lineEdity{num}')

  8. x_input.setText(x)
  9. y_input.setText(y)

  10. return set_position
复制代码


试试看这个
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

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

本版积分规则

展开

QQ|Archiver|手机版|小黑屋|全球主机交流论坛备用站

GMT+8, 2025-4-20 10:43 , Processed in 0.046161 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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