Qt5 的發展,未來應該會以 QML(QtQuick) 為主,QWidget應該還會存在,不過,我想應該就只有維設而已了;試了一下,果然很強大,值得用
參考:
[Python] 打包成執行檔程式
這幾天幫學長做 Linux 上的 GUI 介面,由於主程式是 python,所以找了一些資料,目前還是以 GTK 和 QT 為主流。
做了之後,就順便測試一下幾年前用過的打包程式,cz_freeze, py2exe, pyinstaller,在 Windows 10 x64 + Python 3.6.2 (x64) 的平台上,cz_freeze 和 pyinstaller 都可以,但是 py2exe 在 3.6.2 似乎無法編譯成功。
另外,pyinstaller 的操作完勝另外 2 支程式,方便簡單直接。推薦!! 不過,cz_freeze 可以直接把程式包成安裝檔,直接雙擊 2 下就可以安裝,唯一的缺點是沒有在桌面建立捷徑,美中不足。
做了之後,就順便測試一下幾年前用過的打包程式,cz_freeze, py2exe, pyinstaller,在 Windows 10 x64 + Python 3.6.2 (x64) 的平台上,cz_freeze 和 pyinstaller 都可以,但是 py2exe 在 3.6.2 似乎無法編譯成功。
另外,pyinstaller 的操作完勝另外 2 支程式,方便簡單直接。推薦!! 不過,cz_freeze 可以直接把程式包成安裝檔,直接雙擊 2 下就可以安裝,唯一的缺點是沒有在桌面建立捷徑,美中不足。
[Python] 如何套用 xrc 檔案
參考:UsingXmlResources
感想: xrc 只有單獨介面,所以若要取值或 binding 動作的話,就得自己再寫code處理,雖然已經方便許多,但是似乎還是有些煩瑣。
檔案:main.py, frame.py, gui.xrc
main.py
感想: xrc 只有單獨介面,所以若要取值或 binding 動作的話,就得自己再寫code處理,雖然已經方便許多,但是似乎還是有些煩瑣。
檔案:main.py, frame.py, gui.xrc
main.py
import wxframe.py
import wx.xrc as xrc
GUI_FILENAME = "gui.xrc"
GUI_MAINFRAME_NAME = "MainFrame"
class MyApp(wx.App):
def OnInit(self):
# Load all controls:
self._do_layout()
return True
def _do_layout(self):
self.res = xrc.XmlResource( GUI_FILENAME )
self.frame = self.res.LoadFrame( None, GUI_MAINFRAME_NAME )
self.SetTopWindow(self.frame)
self.frame.Show(1)
if __name__ == '__main__':
app = MyApp()
app.MainLoop()
import wxgui.xrc
import wx.xrc as xrc
class MainFrame(wx.Frame):
def __init__(self):
pre = wx.PreFrame()
# the Create step is done by XRC.
self.PostCreate(pre)
self.Bind(wx.EVT_WINDOW_CREATE, self.OnCreate)
def OnCreate(self, event):
self.Unbind(wx.EVT_WINDOW_CREATE)
wx.CallAfter(self._PostInit)
event.Skip()
return True
def _PostInit(self):
# Do all init here
self.Fit()
self.SetAutoLayout(True)
self.btnExit = xrc.XRCCTRL(self, 'btnExit')
self.Bind(wx.EVT_BUTTON, self.OnBtnExit, self.btnExit)
# Set properties:
self.btnExit.SetLabel('Exit')
def OnBtnExit(self, evt=None):
self.Close()
<?xml version="1.0" encoding="UTF-8"?>
<resource version="2.3.0.1">
<object class="wxFrame" name="demoframe" subclass="form.MainFrame">
<centered>1</centered>
<style>wxDEFAULT_FRAME_STYLE</style>
<title>Testing wx XRC mechanism</title>
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<object class="wxPanel">
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<object class="wxButton" name="btnExit">
<label></label>
<default>1</default>
</object>
<flag>wxALL|wxALIGN_CENTRE_VERTICAL|wxALIGN_CENTRE_HORIZONTAL</flag>
<border>20</border>
</object>
</object>
</object>
<flag>wxALL|wxEXPAND</flag>
</object>
</object>
</object>
</resource>
PyQt5 學習筆記00
2017年10月14日 星期六
幾年前練習用來做 Linux GUI 介面,這次剛好學長有需要,就再回頭來試試,努力了一下,還好有先做出原型,順便把選單、下拉選單的連結順便加進去。
有些東西還沒完善,有些東西則記錄下來,以免下次又要再重找一次。
Interface Prototype:
有些東西還沒完善,有些東西則記錄下來,以免下次又要再重找一次。
Interface Prototype:
標籤:
Programming,
PYQT,
Qt
Nginx 跑 CodeIgniter 的設定
2017年10月7日 星期六
Reference: https://codeigniter.org.tw/userguide3/general/urls.html
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include fastcgi_params;
fastcgi_param HTTPS off;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
[programming] OpenId 函式庫 CN_match 錯誤
2017年10月6日 星期五
新北 openid 的 php 範例中,openid.php 這支library裡在 #280, #293, #309 這三行中,判斷 ssl 的 CN_match 這個設定已不再使用(deprecated)。
apache2 目前似乎仍可正常使用,不過,放在 nginx 的話,會噴錯誤,將 'CN_match' 自行改成 'peer_name' 可正常執行(共 3 處)。
標籤:
Programming
訂閱:
文章 (Atom)