小编ekh*_*oro的帖子

如何用PIL(python-imaging)创建透明的gif(或png)

试图用PIL 创建一个透明的gif.到目前为止我有这个:

    from PIL import Image

    img = Image.new('RGBA', (100, 100), (255, 0, 0, 0))
    img.save("test.gif", "GIF", transparency=0)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现的一切都是指操纵现有图像来调整透明度设置或将透明图像叠加到另一个上.我只想创建一个透明的GIF(然后绘制).

python transparency imaging gif python-imaging-library

21
推荐指数
1
解决办法
3万
查看次数

如何检查按键修改器是否被按下(shift,ctrl,alt)?

我正在使用QT设计器构建UI,并希望按钮使用不同的修改器执行不同的操作.所以我认为我可以使用动态字符串属性来调用函数,这些属性将根据修饰符执行操作.

如果有人知道更简单的方法,我会非常感激.

python pyqt pyqt4 modifier-key pyqt5

20
推荐指数
2
解决办法
3万
查看次数

PyQt:如何将Combobox设置为Item知道Item的文本(标题)

是否可以将Combobox设置为知道Item的文本值的项目.我试图避免循环for i in range(myCombobox.count())只是为了找到一个Item的索引,所以它可以用来设置一个组合框到该项的索引.

python pyqt pyqt4 qcombobox pyqt5

20
推荐指数
1
解决办法
4万
查看次数

PyQt - 如何向QMainWindow添加单独的UI小部件

我最近才开始编程和Python(PyQt).我有我的主要QMainWindow课程.但我想将它与UI小部件分开,以便所有窗口内容(菜单,工具栏,常用按钮)都在QMainWindow,但所有程序/ UI特定的小部件(pusgbuttons,组合框,图像,复选框等)都在一个单独的QWidget类中.但我不确定我是否正确行事.

  1. 我有布局问题 - 隐藏的东西覆盖菜单,以便它们不能被鼠标点击,我想我没有正确地将我的UI窗口小部件添加到主窗口

我是这样做的:

class MyMainWindow(QMainWindow):
    def __init__(self, parent = None):
        super(MyMainWindow, self).__init__(parent)

        self.main_widget = QWidget(self)
        ...
        self.form_widget = FormWidget(self) 
        #This is my UI widget

        self.main_layout = QVBoxLayout(self.main_widget)
        self.main_layout.sizeConstraint = QLayout.SetDefaultConstraint
        self.main_layout.addWidget(self.form_widget.main_widget) 
        #form_widget has its own main_widget where I put all other widgets onto

        self.main_widget.setLayout(self.main_layout)
        self.setCentralWidget(self.main_widget)
Run Code Online (Sandbox Code Playgroud)
  1. 我已经看过其他Python程序,其中应用程序被分解为许多小代码文件(据我所知,主类中的所有内容都是不可读或无法管理的).

你有什么建议将代码分成小块?怎么做得更好?或者对于UI来说,它们都可以在一个大的地方?我应该将UI代码/类分解为单独的文件吗?

谢谢.

[解决了]

我发现了我的错误 - 我从UI小部件类中删除了main_widget(现在所有UI小部件都直接放在UI类小部件本身上)并且只执行此操作:

self.main_layout.addWidget(self.form_widget)
Run Code Online (Sandbox Code Playgroud)

没有菜单的问题

python layout pyqt qmainwindow

19
推荐指数
3
解决办法
5万
查看次数

addStretch究竟是如何在QBoxLayout中工作的?

我正在做一个关于盒子布局的PyQt4教程.但我不明白它是如何addStretch运作的.

  • 如果我使用vbox.addStretch(1)hbox.addStretch(1),则两个按钮显示在右下方.为什么?
  • 如果我评论vbox.addStretch(1)hbox.addStretch(1)退出,两个按钮出现在我的窗口中央,它们可以水平变形,但不能垂直变形.为什么?
  • 如果我改变值"1"没有区别......那么这个值有什么作用呢?

以下是我正在使用的代码:

import sys
from PyQt4 import QtGui

class BoxLayout(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.setWindowTitle('box layout')

        ok = QtGui.QPushButton("OK")
        cancel = QtGui.QPushButton("Cancel")

        vbox = QtGui.QHBoxLayout()
        vbox.addStretch(1)
        vbox.addWidget(ok)
        vbox.addWidget(cancel)

        hbox = QtGui.QVBoxLayout()
        hbox.addStretch(1)
        hbox.addLayout(vbox)

        self.setLayout(hbox)

        self.resize(100, 100)

app = QtGui.QApplication(sys.argv)
qb = BoxLayout()
qb.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

python layout pyqt qboxlayout

19
推荐指数
1
解决办法
2万
查看次数

PyQt Widget connect()和disconnect()

根据条件,我想将按钮连接/重新连接到不同的功能.

假设我有一个按钮:

myButton = QtGui.QPushButton()
Run Code Online (Sandbox Code Playgroud)

对于这个例子,假设我检查是否有互联网连接.

if connected == True:
    myButton.clicked.connect(function_A)

elif connected == False:
    myButton.clicked.connect(function_B)
Run Code Online (Sandbox Code Playgroud)

首先,我想在重新分配/重新连接到另一个功能(function_A或function_B)之前断开按钮与已连接的任何功能的连接.其次,我已经注意到重新连接按钮后,需要额外点击按钮才能获得新功能.按钮重新连接到另一个功能后,它仍然会尝试运行上一个功能 - 一个按钮之前连接的功能(重新连接之前).请指教.提前致谢!

稍后编辑:

看起来小部件的.disconnect()方法可用于断开按钮与其连接的功能的连接.

myButton.disconnect()
Run Code Online (Sandbox Code Playgroud)

不幸的是.如果小部件没有连接到任何功能,.disconnect()会抛出错误.为了解决这个问题,我使用了Try/Except.但我宁愿使用更优雅的解决方案......

try: myButton.clicked.disconnect() 
except Exception: pass
Run Code Online (Sandbox Code Playgroud)

python pyqt click signals-slots disconnect

18
推荐指数
2
解决办法
3万
查看次数

MIMEText UTF-8在发送电子邮件时编码问题

以下是我的代码的一部分,它发送了一封电子邮件:

servidor = smtplib.SMTP()
servidor.connect(HOST, PORT)
servidor.login(user, usenha)
assunto = str(self.lineEdit.text())
para = str(globe_email)             
texto = self.textEdit.toPlainText()
textos = str(texto)
corpo = MIMEText(textos.encode('utf-8'), _charset='utf-8')
corpo['From'] = user
corpo['To'] = para
corpo['Subject'] = assunto
servidor.sendmail(user, [para], corpo.as_string())
Run Code Online (Sandbox Code Playgroud)

除了主题部分外,一切都很好.当我尝试发送带有特殊字符的字符串(例如"ação")时,会引发此错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

如何在MIMEText的主题中发送带有特殊字符的电子邮件?

python email unicode utf-8 python-3.x

16
推荐指数
1
解决办法
3万
查看次数

如何使用python http.server运行CGI"hello world"

我使用的是Windows 7和Python 3.4.3.我想在浏览器中运行这个简单的helloworld.py文件:

print('Content-Type: text/html')
print( '<html>')
print( '<head></head>')
print( '<body>')
print( '<h2>Hello World</h2>')
print( '</body></html>')
Run Code Online (Sandbox Code Playgroud)

我所做的是:

1)转到命令行C:\Python(安装python的地方)

2)运行: python -m http.server

3)到Firefox并输入 http://localhost:8000/hello.py

但是,浏览器只打印hello.py文件的内容,而不是"Hello World".

我该如何解决?

python cgi http python-3.x

16
推荐指数
1
解决办法
3万
查看次数

Qt - 获取QLabel中字符串的像素长度

我有一个固定宽度的QLabel.
我需要(定期)检查整个字符串是否适合当前宽度的QLabel内部,因此我可以适当调整它的大小.

为此,我需要获取字符串的"像素长度".
(显示字符串所需的水平像素总数).
应该注意的是,QLabel的点大小永远不会改变.

字符串的

我不能简单地检查存在的字符数量,因为有些字符是下标/上标,并且对整个字符串的宽度有不同的贡献.
(这就是说像素宽度和字符数量之间没有简单的关系)

这有什么抽象的,超级便利的功能吗?

规格:
Python 2.7.1
PyQt4
Windows 7

python pyqt width pyqt4 qlabel

15
推荐指数
1
解决办法
2万
查看次数

如何在Qt StyleSheet中只覆盖一个属性:值对

我正在OSX Mavericks上编写新手Qt5代码,并且想要覆盖给定小部件的StyleSheet的一个属性:值对.

如果我运行以下自包含的演示代码:

#include <QApplication>
#include <QMainWindow>
#include <QtGui>
#include <QPushButton>

int
main( int argc, char *argv[] ) {
    QApplication app( argc, argv );

    QMainWindow* mw = new QMainWindow();

    QPushButton* AButton = new QPushButton( "A Button", mw );

    mw->show();

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

我得到了一个很好的按钮,默认为Macintosh风格 - 圆角,按下时标准OSX-蓝色等:

带有OSX默认值的QPushButton

但是,如果我设置样式表以使背景按钮颜色为红色,那么在此过程中我似乎失去了所有其他OSX样式默认值 - 没有更多的圆角,标准边距等:

#include <QApplication>
#include <QMainWindow>
#include <QtGui>
#include <QPushButton>

int
main( int argc, char *argv[] ) {
    QApplication app( argc, argv );

    QMainWindow* mw = new QMainWindow();

    QPushButton* AButton = new QPushButton( "A …
Run Code Online (Sandbox Code Playgroud)

qt qt5 qtstylesheets qpushbutton

15
推荐指数
2
解决办法
6178
查看次数