您的位置:首页 > 编程语言 > Qt开发

170322 PyQt-后台界面设置、WidgetList的使用 汇编5.1

2017-03-22 17:16 274 查看
1625-5 王子昂 总结《2017年3月22日》 【连续第172天总结】

A.
PyQt Label控件大小设置、弹出文件选择

汇编语言
5.1

B.看了一下Qt中的控件size,都是0x0,估计这就是使用scaled设置大小不充满的原因了

在Qt界面中右击控件即可设置它们的最小size

尝试了一下动态修改GUI界面的信息,发现与Tk类似,使用sys.exit(app.exec_)进入主循环以后就不能使用过程代码修改内容了

只能通过信道槽(事件响应)的回调函数来修改

百度查到了getOpenFileName的用法,是微软提供的设定好的库函数弹出选择文件的对话框。

自己复制过来的时候总是闪退,怎么试都是闪退,气哭

最后没办法,找一个同是PyQt5的示例程序原版复制到一个新文件,运行---成了!

说明是衔接有问题,一一对比,发现是一个参数本来为self,在我的程序中因为界面和Widget是两个类,所以出问题了,遂把Widget的对象放入方法的参数里,终于也成功了。

另外getOpenFileName和其他保存之类的对文件操作的对话框,里面的过滤器格式形如:"All File(*);;Picture File(*.jpg *.gif)" 即:不同过滤器使用;;分隔,同一过滤器的不同格式使用空格' '分隔。也是通过关键字多次查找了很久才拼凑出来的知识。

整理了界面与逻辑分离的思路--新建一个QtWidgets.QWidget/QMainWindow类,作为逻辑存放地;在这个类中生成一个界面类的对象,然后对其的域修改即可

也可以直接让新类继承界面类,使用self.同样可以修改其域

使用新类的原因是只有这两个类才有show函数,来显示界面

查了半天如何用TextEdit控件实现换行啊选中背景高亮啊等等功能都完全没有,有点奇怪……

后来发现有ListWidget控件可以轻松实现OTZ搜索之前要先查看一下现有手头资源啊

openFileName可以直接得到文件路径,然后按照路径将它导入Image对象中,在Label控件里就可以生成预览图像了

因为本身Qt自带的信号就有ItemClicked,所以直接就拿来用了,但是因为要显示Item的名字,所以查了半天这个参数如何用信号机制发送。 PyQt5本身资源就比较少,教程里又基本上全都是自定义信号的。解决起来很困难,StackOverflow里倒是有很多问题,然而阅读起来实在费力。英文的重要性啊OTZ

最终终于在边边角角的材料中一点一点拼凑起来:自带的信号会发送参数,只需要在槽中接受参数即可,还好Py可以在'.'后显示方法和域,找到了text()方法得到文本内容,这样才能方便地预览了。

意外收获:Event机制和sender---PyQt中也有Event参数,诸如KeyPress之类的事件使用Event.key()方法可以得到按下的按键

sender则可以得到信号发出者的对象,然后就能使用它的方法和域了

另外在查找文档的时候还发现有人提到在命令交互界面使用help可以获得官方的帮助文档,里面提供了方法和域的说明

下一步是Item的序号,以便进行随机抽取

不过其实抽象一个列表来替代也可以;那么更重要的就是右键菜单,或者是删除功能了(以及删除所传出的信号来修改抽象列表)

汇编:

[0]表示段地址为ds,偏移地址为0的内存单元存放的内容

[bx]表示段地址为ds,偏移地址为bx寄存器的内容的内存单元存放的内容

(X)表示X中存放的内容,X可以是寄存器,可以是段寄存器,也可以是内存单元的物理地址(20位数据,而不是段地址:偏移地址)

idata表示常量

loop
标号

CPU执行loop指令的时候进行两步操作:①(CX)=(CX)-1 
②判断(CX)是否为0,不为0则转至标号处执行程序

通常使用loop实现循环功能,cx存放循环次数

eg:
assume cs:code

code segment

mov ax,2

mov cx,11

s:
add ax,ax

loop s 

mov ax,4c00h

int
21h

code ends

end

C.
明日计划

Qt
WidgetList的序号和删除功能

汇编语言第五章
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: