473,715 Members | 5,414 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Making wxPython a standard module?

Hi Diez & All,
And on a personal note: I find it *buttugly*.
Do you mind explaining "why" you find it *buttugly*? I am asking just
out of curiosity, obviously. I am so biased towards wxPython that I
won't make any comment on this thread in particular, but I am curious
to know why some people find it "ugly" or "bad" or whatever. It has
its own bugs and missing features, of course, but it is one of the
major GUI player in the arena, together with PyQt and PyGTK.

Andrea.

"Imaginatio n Is The Only Weapon In The War Against Reality."
http://xoomer.alice.it/infinity77/
Jun 27 '08 #1
16 2407
On Jun 12, 9:55*am, "Andrea Gavana" <andrea.gav...@ gmail.comwrote:
Hi Diez & All,
And on a personal note: I find it *buttugly*.

Do you mind explaining "why" you find it *buttugly*? I am asking just
out of curiosity, obviously. I am so biased towards wxPython that I
won't make any comment on this thread in particular, but I am curious
to know why some people find it "ugly" or "bad" or whatever. It has
its own bugs and missing features, of course, but it is one of the
major GUI player in the arena, together with PyQt and PyGTK.

Andrea.

"Imaginatio n Is The Only Weapon In The War Against Reality."http://xoomer.alice.it/infinity77/

I'm curious too. I like wxPython because the widgets actually "look"
the way they should in a cross-platform way (for the most part)
because they use the actual widgets sets of the OS. Tkinter draws
everything and can look kind of weird on Windows, although I have seen
some very nice looking programs that use it.

Of course, wx doesn't really do "skinning", so in that respect it may
be hampered more than some of the other toolkits that Andrea
mentioned. I really don't know.

-------------------
Mike Driscoll

Blog: http://blog.pythonlibrary.org
Python Extension Building Network: http://www.pythonlibrary.org
Jun 27 '08 #2
In article <ma************ *************** **********@pyth on.org>,
"Andrea Gavana" <an***********@ gmail.comwrote:
Hi Diez & All,
And on a personal note: I find it *buttugly*.

Do you mind explaining "why" you find it *buttugly*?
My guess would be that "buttugly" is a colloquialism
meaning "exquisitel y lovely".
>I am asking just
out of curiosity, obviously. I am so biased towards wxPython that I
won't make any comment on this thread in particular, but I am curious
to know why some people find it "ugly" or "bad" or whatever. It has
its own bugs and missing features, of course, but it is one of the
major GUI player in the arena, together with PyQt and PyGTK.

Andrea.

"Imaginatio n Is The Only Weapon In The War Against Reality."
http://xoomer.alice.it/infinity77/
--
David C. Ullrich
Jun 27 '08 #3
Andrea Gavana schrieb:
Hi Diez & All,
>And on a personal note: I find it *buttugly*.

Do you mind explaining "why" you find it *buttugly*? I am asking just
out of curiosity, obviously. I am so biased towards wxPython that I
won't make any comment on this thread in particular, but I am curious
to know why some people find it "ugly" or "bad" or whatever. It has
its own bugs and missing features, of course, but it is one of the
major GUI player in the arena, together with PyQt and PyGTK.
For the curious: Not the look & feel (albeit I prefer KDE on linux over
Gnome, which is a Qt/GTK thing and thus affects wx look & feel as well),
but the code & the designers. I've been spoiled by Qt and Apple
Interface Builder I guess.

But as I said: that's a personal opinion, and I'm well aware of the
limitations of Qt (licensing and costs) and of course IB (OSX only)

Diez
Jun 27 '08 #4
On 2008-06-14, Diez B. Roggisch <de***@nospam.w eb.dewrote:
>>And on a personal note: I find it *buttugly*.

Do you mind explaining "why" you find it *buttugly*?
[...]
For the curious: Not the look & feel (albeit I prefer KDE on
linux over Gnome, which is a Qt/GTK thing and thus affects wx
look & feel as well), but the code & the designers.
I've never used any of the designers, but I agree 100% that
wxPython code is nasty ugly. wxPython has a very un-Pythonic
API that's is, IMO, difficult to use. The API isn't really
Robin Dunn's fault: wxPython is a very thin wrapper around
wxWidgets, so it largely retains the same nasty low-level C++
API that wxWidgets has. I presume much of wxPython is
generated in some automated fasion (a la swing). There have
been a couple attempts to wrap wxPython in a cleaner, more
Pythonic API, but they've have limited success (wax is the one
I can think of off the top of my head).

--
Grant Edwards grante Yow! If I had a Q-TIP, I
at could prevent th' collapse
visi.com of NEGOTIATIONS!!
Jun 27 '08 #5
Hallöchen!

Grant Edwards writes:
On 2008-06-14, Diez B. Roggisch <de***@nospam.w eb.dewrote:
>>>And on a personal note: I find it *buttugly*.

Do you mind explaining "why" you find it *buttugly*?

[...]
>For the curious: Not the look & feel (albeit I prefer KDE on
linux over Gnome, which is a Qt/GTK thing and thus affects wx
look & feel as well), but the code & the designers.

I've never used any of the designers, but I agree 100% that
wxPython code is nasty ugly. wxPython has a very un-Pythonic API
that's is, IMO, difficult to use.
I know that such requests may start a never-ending thread but I'd
really like to know what you mean with this. I had almost no GUI
experience when I started to use wxPython, yet it was a pleasure for
me.

Really, aesthetics of the source is important to me being a hobby
programmer, and I don't like wxPython's camel case and getters and
setters. However, even many (if not most) core Python modules don't
respect PEP8 or don't use current language features.

Besides, passing function names as strings is also a wart, and *I*
have simply never understood signal and slots. Maybe we should
accept that there is no silver bullet in GUI toolkits, and any
personal preferences amongst the Big Four are just a matter of
taste. This "un-Pythonic" thing is arbitrary and unfair wording in
my opinion.

Tschö,
Torsten.

--
Torsten Bronger, aquisgrana, europa vetus
Jabber ID: to************* @jabber.rwth-aachen.de
Jun 27 '08 #6
On 2008-06-14, Torsten Bronger <br*****@physik .rwth-aachen.dewrote:
>I've never used any of the designers, but I agree 100% that
wxPython code is nasty ugly. wxPython has a very un-Pythonic
API that's is, IMO, difficult to use.

I know that such requests may start a never-ending thread but
I'd really like to know what you mean with this.
[...]

Well, if we want this thread to be never ending, I'd better put
a little dramatic hyperbole into my answer, so here goes... ;)

IMO, a few of the "un-Pythonic" things about wxPython are:

1) Window ID numbers.

"You don't need to know what it's for, just pass a -1."

Their very existence at the user level feels wrong.

I'm told that for approximately 3 uber-sophisticated
wxWidgets programmers window IDs can be useful in some rare
situations. Meanwhile everybody else working under
"normal" conditions has to pass a useless positional
parameter every time they instantiate a widget. Things that
are useful only in exceptional situations should only be
visible in exception situations.
2) the "flags" parameter.

"1975 called, and they want their bit-masks back."

The mashing together of a several dozen different,
completely unrelated attributes into the "flags" parameter
is a trick left over from C/assembly language programming
on machines who's memory size was measure in KB. Rather
than OR-ing together a bunch of bit-patterns to make the
window act the way you want, you should be setting
individually named object attributes or passing optional,
named parameters to the class method.
3) the parent/child tree

"the only thing less well understood than Window IDs"

I've been writing wxPython apps for about 9 years now, and
I still have only a very vague idea what the parent/child
tree is for. Everybody I know just makes everything the
child of the first panel they put in the application frame.
The same people who specify Window IDs other than -1
probably use complex parent/child trees for something.

4) sizers

"they're like aspirin -- they work, but nobody knows exactly how"

OK, that's a bit out-of-date since I seem to recall that
somebody did finally figure out how aspirin works a couple
years back. The way sizers work seems pretty complex
compared to other GUI toolkits I've used, and the extra
complexity doesn't seem to provide any extra capability.

The one thing that seems to me to be particular complicated
is controlling which objects "stretch" in what axis when a
window is resized. I've been using them for many years,
but I've never gotten them more than about 90% figured out.

Every time I write a wxPython apps, I'm initially surprised
at its behavior when the window is resized and have to
spend some trial-and-error time fiddling with the sizer
parameters. I don't remember having to do that in tkInter
or in Trestle: things "just worked".

5) binding

"What? you wanted a button that _did_ something when you clicked it?"

Binding has actually improved a bit in the past few years.
It's not as obscure as it used to be, but it's still an
extra explicit step that shouldn't be required. It should
only take one line of code to create a button widget that
calls a specified callable when it's clicked. Something
like this:

b = wx.Button(label ="Click Me", action=myCallab le)

Instead you used to have to create a button and then call
some utility function in some other object to bind that
button to a callable (IIRC this was one place where Window
IDs could be used). Now, the button actually has a method
you can use. It's still an extra step...

6) Thousands of wx.UPPER_CASE_I NTEGER_HEX_CONS TANTS

"After all, everything is really just a base-2 integer."

Since we don't have objects or attributes or named
parameters or strings, all information must be passed into
and out of the library as arbitrary integers constants. The
really great thing about that sort of API is it's
versatility: you can pass any value any where! Pass a
width in pixels where a bitmask of window attributes is
expected? No problem!

Well, the build I was running has finished, so that's probably
enough...

--
Grant Edwards grante Yow! Those people look
at exactly like Donnie and
visi.com Marie Osmond!!
Jun 27 '08 #7
Grant Edwards wrote:
On 2008-06-14, Torsten Bronger <br*****@physik .rwth-aachen.dewrote:
>>I've never used any of the designers, but I agree 100% that
wxPython code is nasty ugly. wxPython has a very un-Pythonic
API that's is, IMO, difficult to use.
I know that such requests may start a never-ending thread but
I'd really like to know what you mean with this.

[...]

Well, if we want this thread to be never ending, I'd better put
a little dramatic hyperbole into my answer, so here goes... ;)
(blatant self-promotion warning: I'm one of the founders of Dabo, and it
sounds like you may like to take a look at it, given your comments below)

IMO, a few of the "un-Pythonic" things about wxPython are:

1) Window ID numbers.

"You don't need to know what it's for, just pass a -1."

Their very existence at the user level feels wrong.

I'm told that for approximately 3 uber-sophisticated
wxWidgets programmers window IDs can be useful in some rare
situations. Meanwhile everybody else working under
"normal" conditions has to pass a useless positional
parameter every time they instantiate a widget. Things that
are useful only in exceptional situations should only be
visible in exception situations.
Dabo is a nice wrapper around wxPython, which among other things does
away with id numbers. There are a few places (wxMenu events, for one)
where you need to deal with window id's, but Dabo doesn't expose the
user to that, it handles it the way it should work.

2) the "flags" parameter.

"1975 called, and they want their bit-masks back."

The mashing together of a several dozen different,
completely unrelated attributes into the "flags" parameter
is a trick left over from C/assembly language programming
on machines who's memory size was measure in KB. Rather
than OR-ing together a bunch of bit-patterns to make the
window act the way you want, you should be setting
individually named object attributes or passing optional,
named parameters to the class method.
Dabo uses properties for everything, including the individual style
bits. And it handles making the setting in the right place so it "just
works" without the user needing to know, for instance, that flag x only
works after the class is fully instantiated, or vice-versa.

Properties can be set on the object once instantiated, sent to the
constructor, or set in a subclass:

# create a textbox by instantiating the baseclass
# and sending property values to the constructor:
txt = dabo.ui.dTextBo x(self, Value="Hello", FontBold=True)

# tweak some other properties:
txt.FontItalic = True
txt.BackColor = "yellow"
3) the parent/child tree

"the only thing less well understood than Window IDs"

I've been writing wxPython apps for about 9 years now, and
I still have only a very vague idea what the parent/child
tree is for. Everybody I know just makes everything the
child of the first panel they put in the application frame.
The same people who specify Window IDs other than -1
probably use complex parent/child trees for something.
Every container object needs to know about its children, and every
object needs to know about its parent. So, in Dabo we have 2 properties:
Children and Parent.
4) sizers

"they're like aspirin -- they work, but nobody knows exactly how"

OK, that's a bit out-of-date since I seem to recall that
somebody did finally figure out how aspirin works a couple
years back. The way sizers work seems pretty complex
compared to other GUI toolkits I've used, and the extra
complexity doesn't seem to provide any extra capability.

The one thing that seems to me to be particular complicated
is controlling which objects "stretch" in what axis when a
window is resized. I've been using them for many years,
but I've never gotten them more than about 90% figured out.

Every time I write a wxPython apps, I'm initially surprised
at its behavior when the window is resized and have to
spend some trial-and-error time fiddling with the sizer
parameters. I don't remember having to do that in tkInter
or in Trestle: things "just worked".
Sizers are admittedly a bit complex in Dabo, too. Or, sizers aren't
complex, but the code that creates them gets pretty wordy pretty fast.

vs = dabo.ui.dSizer( "v")
hs = dabo.ui.dSizer( "h")
hs.append(dabo. ui.dLabel(self, Caption="Name:" ))
hs.append(dabo. ui.dTextBox(sel f))
vs.append(hs)

5) binding

"What? you wanted a button that _did_ something when you clicked it?"

Binding has actually improved a bit in the past few years.
It's not as obscure as it used to be, but it's still an
extra explicit step that shouldn't be required. It should
only take one line of code to create a button widget that
calls a specified callable when it's clicked. Something
like this:

b = wx.Button(label ="Click Me", action=myCallab le)

Instead you used to have to create a button and then call
some utility function in some other object to bind that
button to a callable (IIRC this was one place where Window
IDs could be used). Now, the button actually has a method
you can use. It's still an extra step...
Dabo takes event bindings as arguments to the constructor, such as:

def onButtonHit(sel f, evt):
print "button hit"
but = dabo.ui.dButton (self, OnHit=self.onBu ttonHit)

Hit is the default event, where you use "action". For buttons, it occurs
when the user pushes it. There are a whole host of other events, such as
MouseHover, Idle, etc., and you can bind to any of them in the
constructor by using the syntax above.

We also do auto event binding:

class MyTextBox(dabo. ui.dTextBox):
onValueChanged( self, evt):
print "on value changed"

When instantiated, this textbox automatically runs the onValueChanged
handler when the value changes, even though we never made an explicit
binding.

(auto event binding can also be turned off easily).

6) Thousands of wx.UPPER_CASE_I NTEGER_HEX_CONS TANTS

"After all, everything is really just a base-2 integer."

Since we don't have objects or attributes or named
parameters or strings, all information must be passed into
and out of the library as arbitrary integers constants. The
really great thing about that sort of API is it's
versatility: you can pass any value any where! Pass a
width in pixels where a bitmask of window attributes is
expected? No problem!
All these flags in the global wx namespace is IMO one of its biggest warts.

But in the end, wxPython is the best GUI toolkit for Python, by far,
which is why we picked it when embarking on Dabo. We definitely made the
right choice.
Well, the build I was running has finished, so that's probably
enough...
I guess I'll end the shameless self-promotion now, too.

Paul
Jun 27 '08 #8
On 2008-06-14, Paul McNett <p@ulmcnett.com wrote:
Grant Edwards wrote:
>On 2008-06-14, Torsten Bronger <br*****@physik .rwth-aachen.dewrote:
>>>I've never used any of the designers, but I agree 100% that
wxPython code is nasty ugly. wxPython has a very un-Pythonic
API that's is, IMO, difficult to use.
I know that such requests may start a never-ending thread but
I'd really like to know what you mean with this.

[...]

Well, if we want this thread to be never ending, I'd better put
a little dramatic hyperbole into my answer, so here goes... ;)

(blatant self-promotion warning: I'm one of the founders of Dabo, and it
sounds like you may like to take a look at it, given your comments below)
Yes! Dabo was the other one I was trying to remember. The last
time I looked Dabo appeared to be catching on better than wax
was.
But in the end, wxPython is the best GUI toolkit for Python,
by far,
I've been using it for 9 years. :) I can pretty much always
make it work, and the result looks native to Windows users and
"native enough" to Linux users...

--
Grant Edwards grante Yow! I'm rated PG-34!!
at
visi.com
Jun 27 '08 #9
On 2008-06-14, Torsten Bronger <br*****@physik .rwth-aachen.dewrote:
>[...]

IMO, a few of the "un-Pythonic" things about wxPython are:

1) Window ID numbers.

When I started to use wxPython, there was a newly-introduced
wx.ID_ANY that you could give instead of -1. My eyes filtered
it out after a couple of hours, just as they do with "self".
Defining a new name for -1 is just painting the wart a
different color.
>[...]

2) the "flags" parameter.

Well, I like flags, and I don't see that they are unpythonic. I
find the code they produce very legible.
You're saying that having the user or-together a bunch of
bitmasks and pass the result as an integer is a common way for
Python functions/object allow the user to turn optional
features on and off?

You must be using a different Python than I am. What I see
used for that in the standard library modules are either named
parameters with useful default values or individual object
attributes. The only exceptions I can think are low level
routines in the "os" and "socket" modules that allow direct
access to things like Unix libc calls like open(), creat(),
read(), write() and to the BSD sockets API.
>[...]

3) the parent/child tree

See wx.ID_ANY.
I don't see what the two have to do with each other, but maybe
that's the root of all my problems.
>[...]

4) sizers

Maybe because I come from TeX/LaTeX, i liked sizers
immediately. They worked well for me.
I came from TeX/LaTeX also, and before wx, I spent a little
time using Trestle GUI widgets which follow the TeX
box-and-glue paradigm almost exactly. I guess I don't find wx
sizers work much like TeX/LaTeX boxes.
>[...]

5) binding

"What? you wanted a button that _did_ something when you
clicked it?"

You're right, this can be better. There's too much explicitness.
However, if you really hate the construct, you can define a
shortcut.
I do. I sub-class wx.Button. Users should have to do that to
get basic functionality that's required in 99.999% of the
widget's use cases. Explicit is fine if it serves a purpose. I
don't see the purpose of requiring a second line of code to
bind a button to a callable.
>[...]

6) Thousands of wx.UPPER_CASE_I NTEGER_HEX_CONS TANTS

Thank you for the thorough explanations but in my opinion your
points are minor.
They're minor in that they don't prevent you from writing
programs that work, but they're not minor in that they
unnecessarily increase the workload of the user without
providing any benefit. They are sources of bugs.
Additionally, most of them are a matter of taste. I don't
think that because you didn't find sizers convenient, or some
parts too explicit, you can say that wxWidgets is un-Pythonic.
Maybe a couple are just bad design decisions that weren't well
thought out rather than being "un-Pythonic". OTOH, I consider
that being well thoght out and well designed is one of the
characteristics of Python, so things that aren't are un-Pythonic.
I rather have the impression that you like terseness, which is
totally okay but a different thing.
I think that the most common use cases should be handled with a
minimum of "extra" stuff having to be done by the user. It's
just not Pythonic to require a user to specify default values
for x,y,z when non-default valus for x,y,z are only used in 1
case out of 10000. In Python you use named parameters with
default values. You don't use positional parameters and then
tell the user "yes, I know this is useless almost all the time,
so just pass a -1 if you want the default behavior. You
shouldn't have to specifically ask for default behavior. You
should only have to ask for non-default behavior.
I agree that changing the naming conventions and making use of
properties would increase pythonicness, but on an already high
level.
I guess my views on what is "pythonic" are a lot different. I
also don't think it's at all surprising that a C++ library like
wxWidgets has an API that isn't very Pythonic.

--
Grant Edwards grante Yow! I'm gliding over a
at NUCLEAR WASTE DUMP near
visi.com ATLANTA, Georgia!!
Jun 27 '08 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

6
2195
by: Logan | last post by:
Would you recommend to use the wx package of wxPython? From the documentation: Provides a way to drop the wx prefix from wxPython objects by dynamically loading and renaming objects from the real wxPython package. This is the first phase of a transition to a new style of using wxPython. For example: import wx
25
3350
by: BJörn Lindqvist | last post by:
See: http://www.wxpython.org/quotes.php. especially: "wxPython is the best and most mature cross-platform GUI toolkit, given a number of constraints. The only reason wxPython isn't the standard Python GUI toolkit is that Tkinter was there first." - Guido van Rossum Guess, that answers my question, but isn't "Tkinter was there first" a very bad answer? :) It is kinda ugly too, so I wonder why it can't be replaced? Or maybe another GUI...
2
1937
by: Alain Paschoud | last post by:
Hi all, I made a small dialog in WxPython. I can run the python script with a double-click or through command line, and everything goes fine (dialog appears, which means that wx module has been found). Then, I decided to write a C program (under Windows, with Cygwin) that will read my script (through PyRun_SimpleFile() function) and run it. But the system doesn't find the wx module to import... Traceback (most recent call last):
0
1656
by: Robin Dunn | last post by:
Announcing ---------- The 2.6.3.0 release of wxPython is now available for download at http://wxpython.org/download.php. There have been many enhancements and fixes implemented in this version, many of which are listed below and at http://wxpython.org/recentchanges.php. What is wxPython?
0
1537
by: Robin Dunn | last post by:
Announcing ---------- The 2.6.3.0 release of wxPython is now available for download at http://wxpython.org/download.php. There have been many enhancements and fixes implemented in this version, many of which are listed below and at http://wxpython.org/recentchanges.php. What is wxPython?
5
4471
by: blaine | last post by:
The wxPython group is a bit stale compared to this group, so I'll give it a shot :) (READ: Originally when I started htis post, Python 2.5 at the shell did not work (identical behavior to eclipse). I'm not sure why, but it has since worked fine with no problems. Not sure whats going on there... I didn't change anything. Anyways...) Ok so I am having this problem. I am using OS X 10.4. I use MacPython and installed wxPython a few...
10
225
by: John Salerno | last post by:
Just out of curiosity, what are the chances of this happening (sort of like what happened with sqlite)? I read somewhere that Guido said the only reason Tkinter is still the standard GUI module instead of wxPython is because "it was there first." Perhaps a joke, but it got me thinking that there could be a chance of this happening. I'm sure most Python work doesn't involve GUIs, so it's not a priority, but to have wxPython be a standard...
2
1019
by: Andrea Gavana | last post by:
Hi Ed & All, On Thu, Jun 12, 2008 at 4:11 PM, Ed Leafe wrote: Maybe. But I remember a nice quote made in the past by Roger Binns (4 years ago): """ The other thing I failed to mention is that the wxPython API isn't very Pythonic. (This doesn't matter to people like me who are used to GUI
0
8718
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
9343
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
9104
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9047
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
7973
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
6646
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5967
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4738
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
3
2119
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.