亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wxpython.tex

?? Wxpython Implemented on Windows CE, Source code
?? TEX
?? 第 1 頁 / 共 2 頁
字號:
\section{wxPython overview}\label{wxpython}
%\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
%\setfooter{\thepage}{}{}{}{}{\thepage}%

This topic was written by Robin Dunn, author of the wxPython wrapper.

%----------------------------------------------------------------------
\subsection{What is wxPython?}\label{wxpwhat}

wxPython is a blending of the wxWidgets GUI classes and the
\urlref{Python}{http://www.python.org/} programming language.

\wxheading{Python}

So what is Python?  Go to
\urlref{http://www.python.org}{http://www.python.org} to learn more,
but in a nutshell Python is an interpreted,
interactive, object-oriented programming language. It is often
compared to Tcl, Perl, Scheme or Java.

Python combines remarkable power with very clear syntax. It has
modules, classes, exceptions, very high level dynamic data types, and
dynamic typing. There are interfaces to many system calls and
libraries, and new built-in modules are easily written in C or
C++. Python is also usable as an extension language for applications
that need a programmable interface.

Python is copyrighted but freely usable and distributable, even for
commercial use.

\wxheading{wxPython}

wxPython is a Python package that can be imported at runtime that
includes a collection of Python modules and an extension module
(native code). It provides a series of Python classes that mirror (or
shadow) many of the wxWidgets GUI classes. This extension module
attempts to mirror the class hierarchy of wxWidgets as closely as
possible. This means that there is a wxFrame class in wxPython that
looks, smells, tastes and acts almost the same as the wxFrame class in
the C++ version.

wxPython is very versatile. It can be used to create standalone GUI
applications, or in situations where Python is embedded in a C++
application as an internal scripting or macro language.

Currently wxPython is available for Win32 platforms and the GTK
toolkit (wxGTK) on most Unix/X-windows platforms. See the wxPython
website \urlref{http://wxPython.org/}{http://wxPython.org/} for
details about getting wxPython working for you.

%----------------------------------------------------------------------
\subsection{Why use wxPython?}\label{wxpwhy}

So why would you want to use wxPython over just C++ and wxWidgets?
Personally I prefer using Python for everything. I only use C++ when I
absolutely have to eke more performance out of an algorithm, and even
then I usually code it as an extension module and leave the majority
of the program in Python.

Another good thing to use wxPython for is quick prototyping of your
wxWidgets apps. With C++ you have to continuously go though the
edit-compile-link-run cycle, which can be quite time consuming. With
Python it is only an edit-run cycle. You can easily build an
application in a few hours with Python that would normally take a few
days or longer with C++. Converting a wxPython app to a C++/wxWidgets app
should be a straight forward task.

%----------------------------------------------------------------------
\subsection{Other Python GUIs}\label{wxpother}

There are other GUI solutions out there for Python.

\wxheading{Tkinter}

Tkinter is the de facto standard GUI for Python. It is available
on nearly every platform that Python and Tcl/TK are. Why Tcl/Tk?
Well because Tkinter is just a wrapper around Tcl's GUI toolkit, Tk.
This has its upsides and its downsides...

The upside is that Tk is a pretty versatile toolkit. It can be made
to do a lot of things in a lot of different environments. It is fairly
easy to create new widgets and use them interchangeably in your
programs.

The downside is Tcl. When using Tkinter you actually have two
separate language interpreters running, the Python interpreter and the
Tcl interpreter for the GUI. Since the guts of Tcl is mostly about
string processing, it is fairly slow as well. (Not too bad on a fast
Pentium II, but you really notice the difference on slower machines.)

It wasn't until the latest version of Tcl/Tk that native Look and
Feel was possible on non-Motif platforms. This is because Tk
usually implements its own widgets (controls) even when there are
native controls available.

Tkinter is a pretty low-level toolkit. You have to do a lot of work
(verbose program code) to do things that would be much simpler with a higher
level of abstraction.

\wxheading{PythonWin}

PythonWin is an add-on package for Python for the Win32 platform. It
includes wrappers for MFC as well as much of the Win32 API. Because
of its foundation, it is very familiar for programmers who have
experience with MFC and the Win32 API. It is obviously not compatible
with other platforms and toolkits. PythonWin is organized as separate
packages and modules so you can use the pieces you need without having
to use the GUI portions.

\wxheading{Others}

There are quite a few other GUI modules available for Python, some in
active use, some that haven't been updated for ages. Most are simple
wrappers around some C or C++ toolkit or another, and most are not
cross-platform compatible. See \urlref{this link}{http://www.python.org/download/Contributed.html\#Graphics}
for a listing of a few of them.

%----------------------------------------------------------------------
\subsection{Using wxPython}\label{wxpusing}

\wxheading{First things first...}

I'm not going to try and teach the Python language here. You can do
that at the \urlref{Python Tutorial}{http://www.python.org/doc/tut/tut.html}.
I'm also going to assume that you know a bit about wxWidgets already,
enough to notice the similarities in the classes used.

Take a look at the following wxPython program. You can find a similar
program in the {\tt wxPython/demo} directory, named {\tt DialogUnits.py}. If your
Python and wxPython are properly installed, you should be able to run
it by issuing this command:

\begin{indented}{1cm}
    {\bf\tt python DialogUnits.py}
\end{indented}

\hrule

\begin{verbatim}
001: ## import all of the wxPython GUI package
002: from wxPython.wx import *
003:
004: ## Create a new frame class, derived from the wxPython Frame.
005: class MyFrame(wxFrame):
006:
007:     def __init__(self, parent, id, title):
008:         # First, call the base class' __init__ method to create the frame
009:         wxFrame.__init__(self, parent, id, title,
010:                          wxPoint(100, 100), wxSize(160, 100))
011:
012:         # Associate some events with methods of this class
013:         EVT_SIZE(self, self.OnSize)
014:         EVT_MOVE(self, self.OnMove)
015:
016:         # Add a panel and some controls to display the size and position
017:         panel = wxPanel(self, -1)
018:         wxStaticText(panel, -1, "Size:",
019:                      wxDLG_PNT(panel, wxPoint(4, 4)),  wxDefaultSize)
020:         wxStaticText(panel, -1, "Pos:",
021:                      wxDLG_PNT(panel, wxPoint(4, 14)), wxDefaultSize)
022:         self.sizeCtrl = wxTextCtrl(panel, -1, "",
023:                                    wxDLG_PNT(panel, wxPoint(24, 4)),
024:                                    wxDLG_SZE(panel, wxSize(36, -1)),
025:                                    wxTE_READONLY)
026:         self.posCtrl = wxTextCtrl(panel, -1, "",
027:                                   wxDLG_PNT(panel, wxPoint(24, 14)),
028:                                   wxDLG_SZE(panel, wxSize(36, -1)),
029:                                   wxTE_READONLY)
030:
031:
032:     # This method is called automatically when the CLOSE event is
033:     # sent to this window
034:     def OnCloseWindow(self, event):
035:         # tell the window to kill itself
036:         self.Destroy()
037:
038:     # This method is called by the system when the window is resized,
039:     # because of the association above.
040:     def OnSize(self, event):
041:         size = event.GetSize()
042:         self.sizeCtrl.SetValue("%s, %s" % (size.width, size.height))
043:
044:         # tell the event system to continue looking for an event handler,
045:         # so the default handler will get called.
046:         event.Skip()
047:
048:     # This method is called by the system when the window is moved,
049:     # because of the association above.
050:     def OnMove(self, event):
051:         pos = event.GetPosition()
052:         self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y))
053:
054:
055: # Every wxWidgets application must have a class derived from wxApp
056: class MyApp(wxApp):
057:
058:     # wxWidgets calls this method to initialize the application
059:     def OnInit(self):
060:
061:         # Create an instance of our customized Frame class
062:         frame = MyFrame(NULL, -1, "This is a test")
063:         frame.Show(true)
064:
065:         # Tell wxWidgets that this is our main window
066:         self.SetTopWindow(frame)
067:
068:         # Return a success flag
069:         return true
070:
071:
072: app = MyApp(0)     # Create an instance of the application class
073: app.MainLoop()     # Tell it to start processing events
074:
\end{verbatim}
\hrule

\wxheading{Things to notice}

\begin{enumerate}\itemsep=11pt
\item At line 2 the wxPython classes, constants, and etc. are imported
into the current module's namespace. If you prefer to reduce
namespace pollution you can use "{\tt from wxPython import wx}" and
then access all the wxPython identifiers through the wx module, for
example, "{\tt wx.wxFrame}".
\item At line 13 the frame's sizing and moving events are connected to
methods of the class. These helper functions are intended to be like
the event table macros that wxWidgets employs. But since static event
tables are impossible with wxPython, we use helpers that are named the
same to dynamically build the table. The only real difference is
that the first argument to the event helpers is always the window that
the event table entry should be added to.
\item Notice the use of {\tt wxDLG\_PNT} and {\tt wxDLG\_SZE} in lines 19
- 29 to convert from dialog units to pixels. These helpers are unique
to wxPython since Python can't do method overloading like C++.
\item There is an {\tt OnCloseWindow} method at line 34 but no call to
EVT\_CLOSE to attach the event to the method. Does it really get
called?  The answer is, yes it does. This is because many of the
{\em standard} events are attached to windows that have the associated
{\em standard} method names. I have tried to follow the lead of the
C++ classes in this area to determine what is {\em standard} but since
that changes from time to time I can make no guarantees, nor will it

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲乱码一区二区三区在线观看| 日本午夜一本久久久综合| 亚洲午夜视频在线| 成人国产精品免费网站| 欧美日本韩国一区二区三区视频| 国产日韩精品一区二区三区在线| 午夜精品一区在线观看| 亚洲午夜精品一区二区三区他趣| 国产一区二区在线观看免费| 欧美性猛交xxxx黑人交 | 精品一区二区三区在线播放视频| 91日韩一区二区三区| 国产日韩欧美综合在线| 日韩成人一级大片| 精品视频在线免费| 一区二区三区四区高清精品免费观看 | 国产精品69久久久久水密桃| 欧美一级精品大片| 亚洲成国产人片在线观看| 99久久精品99国产精品| 日本一区二区成人| 国产高清不卡一区二区| 久久久无码精品亚洲日韩按摩| 天天综合色天天综合| 欧美日韩一区二区三区四区 | 国产无遮挡一区二区三区毛片日本| 亚洲一区二区三区激情| 色婷婷久久久亚洲一区二区三区 | 亚洲综合无码一区二区| 91丨porny丨在线| 亚洲欧洲一区二区三区| 欧美一区二区视频在线观看2022| 亚洲免费在线视频一区 二区| 粉嫩13p一区二区三区| 欧美激情在线免费观看| 成人午夜视频网站| 亚洲同性同志一二三专区| 成人性色生活片免费看爆迷你毛片| 精品电影一区二区三区| 黄色日韩三级电影| 国产欧美精品区一区二区三区| 国产高清在线观看免费不卡| 国产精品视频在线看| 91亚洲永久精品| 亚洲最大成人网4388xx| 在线播放欧美女士性生活| 蜜桃一区二区三区在线| 国产亚洲欧洲一区高清在线观看| 国产成人免费视频精品含羞草妖精| 国产日产亚洲精品系列| 99国产精品国产精品久久| 亚洲小少妇裸体bbw| 欧美一区二区大片| 成人动漫一区二区在线| 亚洲精品国产一区二区精华液 | 韩国毛片一区二区三区| 国产色婷婷亚洲99精品小说| 成人久久18免费网站麻豆| 中文字幕在线不卡一区二区三区 | 国产精品1024久久| 亚洲精品网站在线观看| 4hu四虎永久在线影院成人| 韩日精品视频一区| 亚洲人xxxx| 精品少妇一区二区三区日产乱码 | 亚洲午夜私人影院| 26uuu久久综合| 欧美性色aⅴ视频一区日韩精品| 日韩中文字幕不卡| 欧美国产丝袜视频| 欧美人伦禁忌dvd放荡欲情| 国产电影一区二区三区| 亚洲一区在线观看网站| 久久精品欧美一区二区三区不卡| 91久久久免费一区二区| 激情丁香综合五月| 午夜精品免费在线观看| 国产无遮挡一区二区三区毛片日本| 欧美午夜影院一区| 国产盗摄精品一区二区三区在线 | 欧美一区二区精品| 91国偷自产一区二区开放时间| 美女脱光内衣内裤视频久久影院| 中文字幕一区二区三区av| 精品日韩在线观看| 欧美日韩成人综合在线一区二区| 成人精品视频一区| 老司机午夜精品| 亚洲一区二区三区四区的| 国产清纯在线一区二区www| 欧美一级片在线看| 欧美色视频在线| 91视频国产资源| 成人av片在线观看| 国产精品一区久久久久| 卡一卡二国产精品| 亚洲电影视频在线| 亚洲欧美韩国综合色| 国产精品国产三级国产aⅴ中文| 精品国偷自产国产一区| 欧美一区二区三区日韩视频| 欧美色老头old∨ideo| 一本一本久久a久久精品综合麻豆| 国产.精品.日韩.另类.中文.在线.播放| 偷拍与自拍一区| 亚洲第一激情av| 天天影视色香欲综合网老头| 亚洲小说欧美激情另类| 亚洲线精品一区二区三区| 亚洲在线成人精品| 一区二区激情小说| 亚洲卡通动漫在线| 亚洲免费在线观看视频| 亚洲人成小说网站色在线| 亚洲精品国产无套在线观| 亚洲国产视频网站| 亚洲h精品动漫在线观看| 视频一区二区不卡| 免费观看久久久4p| 日韩国产成人精品| 狠狠色狠狠色综合系列| 精品一区二区国语对白| 国产精品一卡二卡在线观看| 国产精品一区二区无线| 成人福利视频网站| 欧美在线视频日韩| 91精品国产麻豆| 久久久久久久久久久久久夜| 国产精品高潮久久久久无| 亚洲精品精品亚洲| 免费在线看成人av| 国产一区二区免费视频| 波波电影院一区二区三区| 91女人视频在线观看| 欧美日韩在线免费视频| 日韩精品一区二区三区在线| 欧美高清在线视频| 亚洲成人动漫av| 久久99国产乱子伦精品免费| 国产suv精品一区二区三区| 91女神在线视频| 欧美一区三区二区| 国产精品乱人伦一区二区| 一区二区三区视频在线看| 蜜桃视频在线观看一区二区| 成人免费va视频| 在线精品亚洲一区二区不卡| 日韩三级在线免费观看| 中文一区二区在线观看| 亚洲成av人影院| 国产99久久精品| 8v天堂国产在线一区二区| 国产精品色噜噜| 天天操天天干天天综合网| 成人永久免费视频| 91麻豆精品国产91久久久久久| 久久久天堂av| 日韩精品午夜视频| 99在线精品观看| 日韩欧美成人一区二区| 亚洲欧美日本韩国| 国产精品一卡二卡在线观看| 欧美日本国产视频| 亚洲欧洲成人精品av97| 久久99蜜桃精品| 欧美理论在线播放| 18成人在线观看| 国产精品综合二区| 欧美一卡在线观看| 亚洲综合视频在线观看| 国产成人av福利| 日韩女优电影在线观看| 一区二区三区四区精品在线视频| 国产成人av网站| 久久久久久久电影| 日韩和欧美一区二区| 91久久奴性调教| 亚洲图片你懂的| 成人毛片老司机大片| 久久久久久综合| 久久爱www久久做| 欧美一区二区成人6969| 日韩一区精品视频| 欧美顶级少妇做爰| 亚洲国产欧美另类丝袜| 色综合色综合色综合| 亚洲天堂中文字幕| 成人av资源下载| 国产精品视频yy9299一区| 国产白丝精品91爽爽久久| 国产亚洲午夜高清国产拍精品| 韩国毛片一区二区三区| 久久亚洲精精品中文字幕早川悠里 | 午夜精品久久久久久不卡8050| 日本韩国精品在线| 伊人性伊人情综合网| 色婷婷激情一区二区三区| 亚洲免费观看高清完整版在线观看熊 | 亚洲第一狼人社区| 欧美男男青年gay1069videost |